This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
build:backups [2007/06/13 14:33] 206.197.251.70 Mention rsync+SSH and local tarballs at top. (CMB) |
build:backups [2010/07/18 16:51] (current) SLUUG Administration |
||
|---|---|---|---|
| Line 4: | Line 4: | ||
| We're also backing up locally to tarballs for easier access, and to have multiple versions of backups. | We're also backing up locally to tarballs for easier access, and to have multiple versions of backups. | ||
| + | |||
| ===== Backup Dirs ===== | ===== Backup Dirs ===== | ||
| Line 10: | Line 11: | ||
| <code rootshell> | <code rootshell> | ||
| mkdir -p /var/backups | mkdir -p /var/backups | ||
| + | mkdir -p /var/backups/bud | ||
| + | mkdir -p /var/backups/budlight | ||
| mkdir -p /var/backups/etc | mkdir -p /var/backups/etc | ||
| mkdir -p /var/backups/home | mkdir -p /var/backups/home | ||
| mkdir -p /var/backups/usr_local | mkdir -p /var/backups/usr_local | ||
| mkdir -p /var/backups/email | mkdir -p /var/backups/email | ||
| + | mkdir -p /var/backups/web | ||
| + | mkdir -p /var/backups/mysql | ||
| chmod -R 600 /var/backups | chmod -R 600 /var/backups | ||
| </code> | </code> | ||
| - | ===== Backup of /etc ===== | + | ===== Rsync Backups ===== |
| + | |||
| + | |||
| + | For the procedure used for backups of michelob and dark using rsync, see [[rsync-aix]]. | ||
| + | |||
| + | ===== Tarball Backups ===== | ||
| + | |||
| + | |||
| + | ==== Backup of /etc ==== | ||
| Create the backup script in /etc/cron.daily/backup-etc: | Create the backup script in /etc/cron.daily/backup-etc: | ||
| <code bash> | <code bash> | ||
| Line 37: | Line 50: | ||
| - | ===== Backup of /home ===== | + | ==== Backup of /home ==== |
| Note that we only do weekly backups of home, because it's a lot bigger than the other directories that we back up. | Note that we only do weekly backups of home, because it's a lot bigger than the other directories that we back up. | ||
| Line 59: | Line 72: | ||
| - | ===== Backup of /usr/local ===== | + | ==== Backup of /usr/local ==== |
| Create the backup script in /etc/cron.daily/backup-usr_local: | Create the backup script in /etc/cron.daily/backup-usr_local: | ||
| <code bash> | <code bash> | ||
| Line 80: | Line 93: | ||
| - | ===== Backup of Web Sites ===== | + | |
| + | ==== Backup of Web Sites ==== | ||
| NOTE: We currently store web sites in ''/home/web'', so we do not need to back up anything separately at this point. | NOTE: We currently store web sites in ''/home/web'', so we do not need to back up anything separately at this point. | ||
| - | ===== Backup of Email ===== | + | We do have a backup procedure for the wiki content. The ''/etc/cron.daily/backup-dokuwiki'' script copies a backup of the wiki data files to ''/var/backups/web/''. |
| + | |||
| + | <code /etc/cron.daily/backup-dokuwiki> | ||
| + | #!/bin/sh | ||
| + | |||
| + | DATE=`date +'%Y%m%d'` | ||
| + | BACKUPDIR=/var/backups/web | ||
| + | EXCLUDE='data/cache/*' | ||
| + | INCLUDE='data/ conf/' | ||
| + | WIKIDIR=/srv/www/wiki.sluug.org/public | ||
| + | |||
| + | tar cfz $BACKUPDIR/wikidata-$DATE.tgz -C $WIKIDIR --exclude="$EXCLUDE" $INCLUDE | ||
| + | |||
| + | </code> | ||
| + | |||
| + | This tars all other vhosts in /srv/www | ||
| + | |||
| + | <code /etc/cron.daily/backup-www> | ||
| + | #!/bin/sh | ||
| + | |||
| + | SRCDIR=/srv/www | ||
| + | BACKUPDIR=/var/backups/web | ||
| + | EXCLUDE='wiki.sluug.org/* wordpress*' | ||
| + | DATE=`date +'%Y%m%d'` | ||
| + | |||
| + | tar cfz $BACKUPDIR/www-$DATE.tgz -P $SRCDIR --exclude="$EXCLUDE" | ||
| + | </code> | ||
| + | |||
| + | ==== Backup of Email ==== | ||
| NOTE: We currently store users' email folders in their home directories, so we do not need to back up anything separately at this point. | NOTE: We currently store users' email folders in their home directories, so we do not need to back up anything separately at this point. | ||
| + | ==== Backup File Rotation ==== | ||
| + | TODO: We need to delete tarballs that get old, so we don't keep too many around. Would be nice to keep: 1 backup per day for 1 week (or 2 weeks); 1 backup per week for a year (or 1-6 months); 1 backup per month forever. | ||
| + | |||
| + | ===== MySQL ===== | ||
| + | |||
| + | Decided not to use ''mysqlhotcopy'', as it does not handle InnoDB databases, which some of our apps may require. So we're using ''mysqldump''. The ''--add-locks'' makes loading the resulting dump faster. The ''--allow-keywords'' allows fields to have the same name as SQL keywords. The ''--create-options'' includes MySQL-specific options on ''CREATE TABLE'' statements. | ||
| + | |||
| + | <code rootshell> | ||
| + | #!/bin/sh | ||
| + | BACKUPDIR=/var/backups/mysql | ||
| + | DATE=`date +'%Y%m%d'` | ||
| + | mysqldump --all-databases --add-locks --allow-keywords --create-options > $BACKUPDIR/mysql-$DATE.sql | ||
| + | gzip $BACKUPDIR/mysql-$DATE.sql | ||
| + | </code> | ||
| + | |||
| + | TODO: Add this to cron. | ||
| ===== TODO ===== | ===== TODO ===== | ||
| Line 98: | Line 156: | ||
| Back up email folders separately, if/when they're no longer held in home directories. | Back up email folders separately, if/when they're no longer held in home directories. | ||
| + | Take a look at [[http://jeremy.zawodny.com/mysql/ | mysqlsnapshot]] to see if it might work better for MySQL backups. Note that it has not been updated for MySQL 4.x or 5.x, but it's a Perl script, so it might still work. | ||