看到三种备份方案,完整、增量和差异。完整不用解释,增量就是每次备份是相对上次备份的内容传送变化,差异就是每次都相对于同一个完整备份传送变化。差异与增量的差别就是增量总是相对上一次备份的结果,其实二者没有多大区别。
Rsync可以实现这三种备份,就看脚本怎么写了。写了个脚本,实现了保留最近N个备份的增量备份。命名为bk
#!/bin/bash # NAME # bk - Simple backup # USAGE # src dst p [password_file] # DESCRIPTION # This script makes $p backups of $src in $dst and $dst/current points to the latest backup. # ARGUMENTS # src - source, local or remote # dst - destination, local # p - number of backups to make # password_file - password file path # SRC=$1 DST=$2 P=$3 PASSWD=$4 if [ -z "$SRC" -o -z "$DST" -o -z "$P" ]; then echo 'USAGE: src dst p [password_file]'; exit -1; fi OPTS="-a --force --ignore-errors --delete" if [ ! -z "$PASSWD" ]; then OPTS="$OPTS --password-file=$PASSWD" fi NEW=`date +%Y-%m-%d.%H:%M:%S` DIR="$DST/$NEW" if [ -d $DST ]; then N=`ls $DST | wc -l` N=`expr $N - 1` if [ "$N" -eq "$P" ]; then C=`expr $N - $P` O=`ls $DST | head -n 1` mv $DST/$O $DIR else mkdir -p $DIR fi [ -L $DST/current ] && OPTS="$OPTS --link-dest=../`readlink $DST/current`" else mkdir -p $DST fi rsync $OPTS $SRC $DIR && ( [ ! -L $DST/current ] || rm $DST/current > /dev/null ) && ln -s $NEW $DST/current