Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1278754
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-09 19:32:41

四、一些可借鉴的脚本 
 
这里这些脚本都是rsync网站上的例子: 
 
1、每隔七天将数据往中心服务器做增量备份 
 
#!/bin/sh 
 
# This script does personal backups to a rsync backup server. You will end up 
# with a 7 day rotating incremental backup. The incrementals will go 
# into subdirectories named after the day of the week, and the current 
# full backup goes into a directory called "current" 
# tridge@linuxcare.com 
 
# directory to backup 
BDIR=/home/$USER 
 
# excludes file - this contains a wildcard pattern per line of files to exclude 
EXCLUDES=$HOME/cron/excludes 
 
# the name of the backup machine 
BSERVER=owl 
 
# your password on the backup server 
export RSYNC_PASSWORD=XXXXXX 
 
 
######################################################################## 
 
BACKUPDIR=`date +%A` 
OPTS="--force --ignore-errors --delete-excluded --exclude-from=$EXCLUDES 
      --delete --backup --backup-dir=/$BACKUPDIR -a" 
 
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin 
 
# the following line clears the last weeks incremental directory 
[ -d $HOME/emptydir ] || mkdir $HOME/emptydir 
rsync --delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/ 
rmdir $HOME/emptydir 
 
# now the actual transfer 
rsync $OPTS $BDIR $BSERVER::$USER/current 
 
2、备份至一个空闲的硬盘 
 
#!/bin/sh 
 
export PATH=/usr/local/bin:/usr/bin:/bin 
 
LIST="rootfs usr data data2" 
 
for d in $LIST; do 
    mount /backup/$d 
    rsync -ax --exclude fstab --delete /$d/ /backup/$d/ 
    umount /backup/$d 
done 
 
DAY=`date "+%A"` 
     
rsync -a --delete /usr/local/apache /data2/backups/$DAY 
rsync -a --delete /data/solid /data2/backups/$DAY 
 
3、对vger.rutgers.edu的cvs树进行镜像 
 
#!/bin/bash 
 
cd /var/www/cvs/vger/ 
PATH=/usr/local/bin:/usr/freeware/bin:/usr/bin:/bin 
 
RUN=`lps x | grep rsync | grep -v grep | wc -l` 
if [ "$RUN" -gt 0 ]; then 
    echo already running 
    exit 1 
fi 
 
rsync -az vger.rutgers.edu::cvs/CVSROOT/ChangeLog $HOME/ChangeLog 
 
sum1=`sum $HOME/ChangeLog` 
sum2=`sum /var/www/cvs/vger/CVSROOT/ChangeLog` 
 
if [ "$sum1" = "$sum2" ]; then 
    echo nothing to do 
    exit 0 
fi 
 
rsync -az --delete --force vger.rutgers.edu::cvs/ /var/www/cvs/vger/ 
exit 0 
 
4、利用find的一种巧妙方式 
 
rsync -avR remote:'`find /home -name "*.[ch]"`' /tmp/ 
 
可以用这种方法列出需要备份的文件列表——这种方法似乎比较少人用到。 
 
五、参考资料: 
 
1、
2、rsync examples 
3、rsync FAQ  
阅读(601) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~