Domain Backup[edit | edit source]
From the home directory,
cd ~/
make these two directories:
mkdir backups
mkdir backups/archives
Create the following bash program
vi ~/backups/appropedia.sh
Here are the contents:
#!/bin/bash suffix=$(date +%Y%m%d) cd /home/lonny1/.snapshot/hourly.0/ tar -cf /home/lonny1/backups/archives/appropedia.$suffix.tar appropedia.org/ gzip /home/lonny1/backups/archives/appropedia.$suffix.tar
Change the rights.
chmod 755 ~/backups/appropedia.sh
Line by line explanation[edit | edit source]
- Defines a Bash script.
- Sets up the date structure to append to the file name. Use the command "man date" to learn different time stamps.
- Change to Dreamhost's backup directory. See below for more info.
- Creates the tar file. the flags "-cf" tell the program tar to Create Forcefully an archive. The first path /home/...$suffix.tar tells it where to create the archive, and the second path tells it what to archive.
- Zip it up for exporting.
Notes[edit | edit source]
As of the January 2007, a domain backup took about ten minutes.
Mysql Database Backup[edit | edit source]
This script creates a backup of our MySQL database, and places them in the same directory as the domain backups.
Create the following bash program:
vi ~/lonny1/backups/mysql.sh
Here are the contents:
#!/bin/bash cd /home/lonny1/backups/ mkdir mysql suffix=$(date +%Y%m%d%Z) mysqldump --opt -u##### -p##### -h mysql.whatissustainability.org appropedia > mysql/appropedia.$suffix.sql tar -cf archives/mysql_backup.$suffix.tar mysql/* gzip archives/mysql_backup.$suffix.tar # If you would like to email the tar file backup to yourself uncomment this line: # mutt lonny1@appropedia.com -a /home/lonny1/backups/archives/mysql_backup.$suffix.tar -s "MySQL Backup" rm -r mysql/
To add in more databases just copy/paste the mysqldump line underneath itself and fill in the proper information for each database.
Change the rights.
chmod 755 ~/backups/mysql.sh
Line by line explanation[edit | edit source]
- Defines a Bash script (again)
- Changes the current working directory. tar likes relative paths.
- Creates a temporary mysql directory for the MySQL backup(s).
- Sets up the date structure to append to the file name.
- Performs the MySQL dump. More of these can be added for other databases.
- Creates the tar file of the database(s) dumped.
- Compresses the tar file.
- Removes the temporary mysql directory.
Notes[edit | edit source]
As of January 2007, the database backup took around a minute
crontab[edit | edit source]
Edit the cron file to automate the backups at the desired frequency.
Method 1[edit | edit source]
crontab -e
Add or edit the following lines, adjusting the times to your liking:
MAILTO="you@yourdomain.com" 28 1 * * * /home/lonny1/backups/appropedia.sh 14 1 * * * /home/lonny1/backups/mysql.sh
Each command needs to be on it's own line.
Method 2[edit | edit source]
Create a text file dedicated to importing your commands into crontab. I have noticed that, when using very long commands, the the default editor (I think it was pico or nano at the time) seemed to have problems maintaining the single line integrity required by crontab. I use vi, and saved the file here,
~/cron_commands.txt
to load it, use crontab as follows.
crontab cron_commands.txt
check for success with
crontab -l
Automatic FTP downloading of archive[edit | edit source]
Automate importing the backups to a local Windows machine.
Create the following batch file, named as downloads.bat
ftp -i -s:ftp.txt pause
This tells Windows to open up the command line FTP program in non-interactive mode and to access the file, ftp.txt. Pause tells it to leave the window open to view transfer speed and check download success.
Create the following text file, named as ftp.txt
open appropedia.org username password cd backups/ binary mget archives/ mdelete archives/ quit
Place the two files in the same directory in the local Windows machine and create a Windows Scheduled Task to run download.bat a little while after the shell scripts have been executed.
Manual Execution[edit | edit source]
To run the scripts manually, either to test them or to get a more current backup before making significant changes to the sight do the following.
cd ~/backups
./appropedia.sh
./mysql.sh
See also[edit | edit source]
Appropedia's backup plan was mostly devised from here: Dreamhost Automatic Backup
Dreamhost provides a backup plan with their service. It's worth knowing about. Automated domain snapshots (And our domain backup bash script uses it.)