本次备份思路为,每日留有快照,每周二使用Tarball备份于其它分区,保留上一周纪录,同时Log写入/var/log/snap_backup_log中。
- #!/bin/sh
- #############################################
- #Tuesday tar backup other day snapshot
- #design by leocraft
- #leocraft[AT]Gmail.com
- ##############################################
- log_file=/var/log/snap_backup_log
- now=`date`;
- today=`date +%y%m%d`;
- lastweek=`date -v -7d +%y%m%d`;
- week=`date +%w`
- backup_wday=2
- mount -o rw /dev/da1s1d /var/backup
- for target in www sql
- do
- souce_dir=/var/"$target"
- mirror_dir=/mnt/"$target"
- snap_file=/var/"$target"/"$target"_"$today"_snap
- last_snap_file=/var/"target"/"$target"_"$lastweek"_snap
- last_tarball=/var/backup/backup_"$target"_"$lastweek".tar
- this_tarball=/var/backup/backup_"$target"_"$today".tar
- log_format_tarball="$now I backup $target tarball at $this_tarball"
- log_format_snapshot="$now I snapshot the $target at $snap_file"
- mount -u -o snapshot $snap_file $souce_dir
- echo $log_format_snapshot >> $log_file
- if [ $week = $backup_wday ]
- then
- mdconfig -a -t vnode -f $snap_file -u 1
- mount -r /dev/md1 $mirror_dir
- if [ -f $last_tarball ]
- then
- rm $last_tarball
- fi
- cd $mirror_dir
- tar -cf $this_tarball *
- cd ..
- umount $mirror_dir
- mdconfig -d -u 1
- echo $log_format_tarball >> $log_file
- fi
- if [ -f $last_snap_file ]
- then
- rm $last_snap_file
- fi
- done
- umount /var/backup

回复评论