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 [email protected] --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
Thanks for your interest in Tarsnap! The wget line hard-codes 1.0.35, but Tarsnap 1.0.35 is 5 years old (July 25, 2013). The latest release is 1.0.39.
In general, I would suggest that people go to https://tarsnap.com to find the latest version, to avoid out-of-date documentation.