Rsync简单备份

看到三种备份方案,完整、增量和差异。完整不用解释,增量就是每次备份是相对上次备份的内容传送变化,差异就是每次都相对于同一个完整备份传送变化。差异与增量的差别就是增量总是相对上一次备份的结果,其实二者没有多大区别。

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
 

猜你喜欢

转载自ffx.iteye.com/blog/1439684