Debian Backup with Tartarus
How to backup a Debian/Ubuntu server with Tartarus, and why is this usefull for us
Why do you need this, if you are like me and like to experiment a lot, you will end up breaking your server a lot of times, so this will enable you to restore your server fast and easy.
To be able to use Tartarus first we need to install it, so let’s issue the following commands.
wget -O /etc/apt/sources.list.d/wertarbyte.list http://wertarbyte.de/apt/wertarbyte-apt.listwget -O - http://wertarbyte.de/apt/software-key.gpg | apt-key add -apt-get updateapt-get install tartarus tar bzip2 lvm2 gnupg curlThis will add and install the application on your server and some extra applications needed. Now we need to create the required directories for tartarus.
mkdir /etc/tartarusmkdir -p /var/spool/tartarus/timestampsLet’s create a passphrase file, we can do this by executing the command
pwgen -s 50 1 > /etc/tartarus/backup.secThat command will create a file that contains a random generated password, you can just do
cat /etc/tartarus/backup.secJvXqwrouhnV1xaGS563N1ivvmgevUaCVLX13kHkYUmJH6gCiqlSo you can see that we have gotten a random secure password. Next thing, we need to setup a general configuration, that all the other configurations are gonna extend from.
touch /etc/tartarus/generic.incNow open it up in your favorite editor, and adjust your settings to match.
STORAGE_FTP_SSL_INSECURE="yes"STORAGE_METHOD="FTP"STORAGE_FTP_SERVER="<FTP SERVER>"STORAGE_FTP_USER="<FTP USER>"STORAGE_FTP_PASSWORD="<PUT YOUR FTP PASSWORD HERE>"STORAGE_FTP_USE_SFTP="yes"
COMPRESSION_METHOD="bzip2"STAY_IN_FILESYSTEM="yes"
ENCRYPT_SYMMETRICALLY="yes"ENCRYPT_PASSPHRASE_FILE="/etc/tartarus/backup.sec"
TARTARUS_POST_PROCESS_HOOK() { echo -n "$STORAGE_FTP_PASSWORD" | /usr/sbin/charon.ftp \ --host "$STORAGE_FTP_SERVER" \ --user "$STORAGE_FTP_USER" --readpassword \ --maxage 7 \ --dir "$STORAGE_FTP_DIR" --profile "$NAME"}
TARTARUS_DEBUG_HOOK() { echo $DEBUGMSG | logger}So this is the generic file from which everyone will extend. Now we have everything, all the variables are set, and we an create our first backup script. Let’s create a complete root backup.
touch /etc/tartarus/root.confAfter opening in your favorite editor add the following lines
source /etc/tartarus/generic.incNAME="root"DIRECTORY="/"EXCLUDE="/tmp/ /proc/ /sys/ /var/tmp/ /var/run/ /var/lib/mysql/"CREATE_LVM_SNAPSHOT="no"INCREMENTAL_STACKING="yes"INCREMENTAL_TIMESTAMP_FILE="/var/spool/tartarus/timestamps/root"You can see we excluded some of the directories for backup. Let’s explain some of the options, for a full list of options you can check them at Tartarus
-
INCREMENTAL_TIMESTAMP_FILE
Everytime a full backup is successfully completed, Tartarus willtouch the file specified here as a reference point for future incremental backups.
-
INCREMENTAL_STACKING
With this option enabled, Tartarus will also update the flagfile after completing a successfull partial (differential/incremental) backup run. By that, incremental backups are “stacked” on each other instead of being based on the most recent full backup.
Now let’s create a backup script that we gonna put into cron to run everyday.
touch /usr/local/sbin/tartarus-backup.shchmod u+x /usr/local/sbin/tartarus-backup.shAnd with your editor add the following contents
#!/bin/sh# /usr/local/sbin/tartarus-backup.sh# Run all backup profile found in /etc/tartarus/ and pass# command line arguments on to tartarus (e.g. -i)for profile in /etc/tartarus/*.conf; do /usr/sbin/tartarus $* "$profile"doneSo in crontab we add the following, so it will do a full backup every sunday, and from monday to saturday incremental backup
crontab -eAnd copy paste the following entries
0 1 * * mon-sat /usr/local/sbin/tartarus-backup.sh -i0 1 * * sun /usr/local/sbin/tartarus-backup.shWhen you do a
crontab -lYou should be able to see them in the output OK, so beacuse this is the first time, let’s run the backup script so it creates full backups
/usr/local/sbin/tartarus-backup.shRestoring a backup
Since tartarus is based on linux utilities, restoring a backup from a rescue system is extremely easy, in case of incremental stacking you will need to extract all the files in the order they were created, you still use the same command to extract them.
mkdir /mnt/restorecurl ftp://USER:PASS@YOURSERVER/DIR/FILE | gpg --decrypt | tar xpvj -C /mnt/restoreYour backup is restored in the directory /mnt/restore