> Yes, if you remove the --delete parameter to the rsync call, then it
> will not delete files that no longer exist in the source file system. 
At > RTI I don't use --delete when backing up certain project shares, to
>protect against users' "accidental" file deletions. Of course, you end
up >with a backup archive that is much larger than the source file
system this >way. With the --delete parameter, the backup is an exact
mirror of the
>source.

There's a decent article on using Rsync for (tiered) snapshot-style
backups here;

http://www.mikerubel.org/computers/rsync_snapshots/#Extensions

which allows for versioned backups.  The other advantage of Rsync is that
it also supports SSH, which when coupled with SSH keys works nicely for
remote/automated backups via an encrypted tunnel;

#!/bin/bash

# nickf database backup script January 2008

# usage: mysqldump -a -u USERNAME -p DATABASE > FILENAME.mysql

# back-up the MySQL databases

USER=<username redacted>
PWD=<removed by nickf for emailing>
MYSQLCMD="/usr/bin/mysql"
MYSQLDUMP="/usr/bin/mysqldump"
RSYNC="/usr/bin/rsync"
#DBLISTFILE=list_of_databases.txt
TMPFILE=`/bin/mktemp /tmp/dblist-nickf.XXXXXXXXXXXX`
#echo $TMPFILE

# remove the backup script template if exists
if [ -f backup-script.sh ] ; then
        rm backup-script.sh
        else echo "hi" > /dev/null
fi

# generate a list of MySQL databases, remove "Database" header, and
put in a file
#
$MYSQLCMD -e "show databases;" -u $USER -p<removed> |egrep -v
"Database" > $TMPFILE

# touch a backup script template.
/usr/bin/touch backup-script.sh ; chmod 744 backup-script.sh

# add the BASH script header
for files in backup-script.sh
do
ed -s backup-script.sh << TEXT
0,a
#!/bin/bash
# backup script template, automatically generated
# DO NOT EDIT THIS FILE!  rather, edit the backup-database-nickf.sh
template generator
#
.
w
q
TEXT
done

# put the MySQL dump actions into the backup script template
cat $TMPFILE | awk -v RS="\n" '{print "/usr/bin/mysqldump -a -u
username -p<password-removed>", $1, ">",$1".mysql" }' >> backup-
script.sh

# create the MySQL database backups from the generated script template
if [ -f backup-script.sh ] ; then
./backup-script.sh
fi

# push the MySQL database backups off-site
#
$RSYNC -avur -e "ssh -i /home/username/.ssh/username-backup-key"
*.mysql webmas...@ns1.domain.org:backups
#
# get rid of our trash

for files in `ls /tmp/dblist-nickf.XXXXXX*` ;
        do rm $files ;
done

# remove mysqldumps
for files in *.mysql ;
        do rm $files ;
done

# back up the username homedir, web site and code tree
$RSYNC -avur -e "ssh -i /home/username/.ssh/username-backup-key" /home/
username webmas...@ns1.domain.org:backups/

# remove the backup script template
if [ -f backup-script.sh ] ; then
rm backup-script.sh
else echo "hi" > /dev/null
fi



============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to