| 
				 linux用rsync实现文档自动备份功能 
 
			
			#!/bin/bash
 mydate="`date '+%Y%m%d.%H%M'`"
 
 # Define rmt location
 RmtUser=root
 #RmtHost=192.168.0.55
 #RmtPath=/home/
 #BackupSource="${RmtUser}@${RmtHost}:${RmtPath}"
 BackupSource="/home/accounts"             # 若进行本地备份则用本地路径替换上面的行
 # Define location of backup
 #BackupRoot="/backups/$RmtHost/"
 BackupRoot="/root" # 若进行本地备份则用本地路径替换上面的行
 LogFile="${BackupRoot}/backup.log"
 ExcludeList="/root/exclude-list.txt"
 #ExcludeList="/root/backup/backup-exclude-list.txt"
 BackupName='domains'
 BackupNum="7"                      # 指定保留多少个增量备份(适用于每周生成归档文件)
 #BackupNum="31"                    # 指定保留多少个增量备份(适用于每月生成归档文件)
 
 # 定义函数检查目录 $1 是否存在,若不存在创建之
 checkDir() {
 if [ ! -d "${BackupRoot}/$1" ] ; then
 mkdir -p "${BackupRoot}/$1"
 fi
 }
 # 定义函数实现目录滚动
 # $1 -> 备份路径
 # $2 -> 备份名称
 # $3 -> 增量备份的数量
 rotateDir() {
 for i in `seq $(($3 - 1)) -1 1`
 do
 if [ -d "$1/$2.$i" ] ; then
 /bin/rm -rf "$1/$2.$((i + 1))"
 mv "$1/$2.$i" "$1/$2.$((i + 1))"
 fi
 done
 }
 
 # 调用函数 checkDir ,确保目录存在
 checkDir "archive"
 checkDir "daily"
 
 #======= Backup Begin =================
 # S1: Rotate daily.
 rotateDir "${BackupRoot}/daily" "$BackupName" "$BackupNum"
 
 checkDir "daily/${BackupName}.0/"
 checkDir "daily/${BackupName}.1/"
 
 mv ${LogFile} ${BackupRoot}/daily/${BackupName}.1/
 
 cat >> ${LogFile} <<_EOF
 ===========================================
 Backup done on: $mydate
 ===========================================
 _EOF
 
 # S2: Do the backup and save difference in ${BackupName}.1
 rsync -avzP --delete \
 -b --backup-dir=${BackupRoot}/daily/${BackupName}.1 \
 --exclude-from=${ExcludeList} \
 $BackupSource ${BackupRoot}/daily/${BackupName}.0 \
 1>> ${LogFile} 2>&1
 
 # S3: Create an archive backup every week
 if [ `date +%w` == "0" ] # 每周日做归档
 # if [ `date +%d` == "01" ] # 每月1日做归档
 #then
 tar -cjf ${BackupRoot}/archive/${BackupName}-${mydate}.tar.bz2 \
 -C ${BackupRoot}/daily/${BackupName}.0 .
 |