A set of bash scripts for managing backups. https://git.stack-source.com/msb/bashup
Go to file
Matthew Saunders Brown 39370cb6bf updated readme
2021-01-23 14:29:15 -08:00
bashup-backup-files.sh added quickstart 2021-01-21 16:56:59 -08:00
bashup-backup-mysql.sh added quickstart 2021-01-21 16:56:59 -08:00
bashup-backup-pdns.sh added quickstart 2021-01-21 16:56:59 -08:00
bashup-list-backups.sh expanded functionality for listing backups 2021-01-23 13:14:09 -08:00
bashup-restore-files.sh updated help, added bashup-restore-pdns.sh 2021-01-22 07:54:54 -08:00
bashup-restore-mysql.sh updated help, added bashup-restore-pdns.sh 2021-01-22 07:54:54 -08:00
bashup-restore-pdns.sh updated help, added bashup-restore-pdns.sh 2021-01-22 07:54:54 -08:00
LICENSE Update 'LICENSE' 2021-01-21 13:44:02 -08:00
README.md updated readme 2021-01-23 14:29:15 -08:00

Bashup

A set of bash scripts for managing backups.

Overview

Bashup includes scripts for backing up & restoring Files/Directories, MySQL databases, and PowerDNS zones.

The scripts assume a mountable backup disk (cloud based block storage, NFS mount, etc.) but works equally well with a local partition or a local backup directory. If the backup dir is configured in /etc/fstab as a mountable disk then it will automatically be mounted and then unmounted when the scripts run.

For "files" backups a combination of rsync & hard links is used. This conserves space as for files that are unchanged simply reference the same indode instead of having duplicate files.

It is intended that each of the desired "backup" scripts is run once a day via cron. They scripts can be re-run multiple times in one day without any negative repercussions. If an existing backup already exists it is simply skipped, it is not overwritten with a newer copy.

The "restore" scripts can be run interatively. If you do not specify options for the restore then you will be prompted with menus of options to help you select what to restore. If the appropriate options are specified on the command line then the restore will be completed wihtout prompts.

Built and tested on Ubuntu 20.04 these scripts should run fine on any recent Debian or Debian based distro without any modifications. It should be trivial to expand support for other distros too, please contact the author if there is interest in this.

Quickstart

Create a backup directory or mount. For example, make a directory named /mnt/backups and create an NFS mount for that directory.

cd /usr/local/src/
wget https://git.stack-source.com/msb/bashup/archive/master.tar.gz -O bashup.tar.gz
tar zxvf bashup.tar.gz
cd bashup
cp bashup-*.sh /usr/local/sbin/
chmod 750 /usr/local/sbin/bashup-*.sh
chown root:root /usr/local/sbin/bashup-*.sh
nano /usr/local/etc/bashup.cnf
crontab -e

The "nano /usr/local/etc/bashup.cnf" command is optional. Do this if you need to override any of the settings at the top of the bashup scripts.

For the crontab add an entry for each of the "bashup-backup-*.sh" scripts that you'd like to run. For example, to back up files at 3:01 am every day add this crontab:

1 3 * * * /usr/local/sbin/bashup-backup-files.sh