Would you like to backup your Ubuntu server with Tarsnap and also backup your Mysql database? Then follow this steps:
Install Tarsnap
1. Install dependencies
sudo apt-get install build-essential ext2fs-dev zlib1g-dev libssl-dev
2. Install Tarsnap
Download Tarsnap with this wget:
wget --no-check-certificate https://www.tarsnap.com/download/tarsnap-autoconf-1.0.35.tgz
Now we need to extract, configure, and compile Tarsnap.
tar xfz tarsnap-autoconf-1.0.35.tgz
cd tarsnap-autoconf-1.0.35
./configure
sudo make install clean
3. Configure Tarsnap
Copy the example config to the live config:
sudo mv /usr/local/etc/tarsnap.conf.sample /usr/local/etc/tarsnap.conf
Then create a key, save this key to a USB or something, you can’t reset it.
mkdir ~/.tarsnap
tarsnap-keygen --keyfile /home/youruser/.tarsnap/tarsnap.key --user your@email.com --machine your-machine-name
You’ll be prompted for your Tarsnap password when running tarsnap-keygen.
Now, edit the tarsnap.conf file:
sudo pico /usr/local/etc/tarsnap.conf
Point the keyfile directive to the key file we created a couple steps ago. The top of your tarsnap.conf file should look similar to this now:
### Recommended options
# Tarsnap cache directory
cachedir /tmp/tarsnap-cache
# Tarsnap key file
keyfile /home/youruser/.tarsnap/tarsnap.key
4. Use Tarsnap to Make a Backup
To create a backup do this:
tarsnap -c -f servername-20140805 /home/forge
I’m using Laravel forge’s home directory. This directory is now backup up to Tarsnap. In the next step we’ll add a backup folder with the latest mysql-database.
Backup Mysql database
Create a folder in /home/forge : backup. Create a file in the folder:
touch /home/forge/makebackup.sh
Insert this information in the file:
#!/bin/sh
TODAY=$(date "+%A");
flock -n ~/.mysqldump mysqldump -u forge -p forge --password=YOURPASSWORD > ~/backup/mysql-latest.sql;
flock -n ~/.tarsnap.lock tarsnap -c -f "$(uname -n)-$(date +%Y-%m-%d_%H-%M-%S)" ~/ 2>/dev/null;
Create Cronjob
Let the makebackup.sh be called every x days:
crontab -e
Insert this piece of info:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO={{YOUREMAILHERE}}
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 2 * * * flock -n ~/.makebackup.lock ~/backup/makebackup.sh
To view the backupped files so far:
tarsnap --list-archives | sort
Thanks to Longren.io and thanks to Hypernode