Backup Seafile program, data and databases using borgbackup to ssh-capable backup server like rsync.net.
Go to file
2019-07-20 18:09:19 -06:00
etc move logwatch under etc dir to mirror real sys 2019-07-20 17:17:33 -06:00
.gitattributes add gitignore and gitattributes 2019-05-18 23:14:48 -06:00
.gitignore update gitignore 2019-05-22 23:07:21 -06:00
503_backup.html sample helper files 2019-05-27 07:24:50 -06:00
excludeLocations.borg sample helper files 2019-05-27 07:24:50 -06:00
LICENSE update readme and license 2019-07-20 18:09:19 -06:00
README.md update readme and license 2019-07-20 18:09:19 -06:00
seafbackup.details update example default locations 2019-07-20 16:57:37 -06:00
seafbackup.sh change success msg for logwatch parsing 2019-07-20 17:14:44 -06:00
xtraLocations.borg update example default locations 2019-07-20 16:57:37 -06:00

Backup a bare-metal Seafile installation using borgbackup

Simple POSIX-compliant script to backup a bare-metal Seafile installation using borgbackup to a remote SSH-capable storage system. I strongly suggest using rsync.net since they are very reliable, fast and even have special pricing for people using borgbackup/attic (details here).

THIS SCRIPT USES BORG (borgbackup) SO PLEASE ENSURE THAT IS INSTALLED CORRECTLY BEFORE TRYING TO USE THIS SCRIPT!

Basic features of this script:

  • Backup your entire Seafile program and data directories.
  • Dump Seafile SQL databases to a temporary directory, add them to the backup and then remove the temporary directory.
  • Easily add additional directories/files to the backup by modifying a plain-text file.
  • Easily exclude directories/files from being backed up (i.e. thumbnails) by modifying a plain-text file.
  • Optionally stop Seafile services during the backup and restart them after.
  • Optionally copy a 503 error page to your webserver so users know your server is unavailable due to a backup being performed. The 503 file is removed when the backup is completed.
  • Run 'borg prune' to trim old backups according to your schedule so you don't pay storage fees for super-old or un-needed backups.
  • Create a clear, easy to parse log file so you can keep an eye on warnings/errors, etc.
  • The generated log file can be easily parsed by tools like logwatch so you can integrate backup-monitoring with your existing system-monitoring solutions.

Check out the wiki

This readme is an overview of the script. For detailed instructions on how the script works, what it does and it's various options, please read the wiki! I've tried to annotate the files as best I could with many many comments, but seriously, reading the wiki if you're stuck is the best approach since I try to go over everything step-by-step.

Overview

This script has NO mandatory parameters. If no parameters are specified, it will proceed using defaults which normally align with the recommended Seafile installation defaults. That being said, it is impossible to determine defaults for things like your backup-server settings, so please make sure you customize the seafbackup.details file with appropriate details!

By default, the script will dump Seafile SQL databases and back them up along with your entire Seafile program and data directories. You can add additional files to be backed up by adding paths to xtraLocations.borg.

Installation

Simply clone this repo to the desired location. I recommend somewhere simple like ROOT's home directory so any sensitive information is restricted to the root user by default.

cd /root
sudo git clone https://git.asifbacchus.app/asif/seafileBackup.git

Running the script

./seafbackup.sh [parameters]

# display abbreviated help
./seafbackup.sh --help

seafbackup.sh

Please open this file in a text editor and follow the comments to fill in the parameters with the correct values for your environment and your backup server.

Final thoughts

I hope this makes backing up your Seafile server easier and removes one more mundane administrative task from your schedule :-) If you have any comments, questions, concerns, suggestions for improvements or notice any bugs, please file an issue in this repo!

For more scripts and solutions like this, check out my blog at My Techie-Thoughts. Thanks!