目前在工作场所服务器上,我们每天运行一次备份,由于大小限制,我们需要每隔三天(或类似的时间)进行一次备份。我们使用 Rsync 进行备份。我想做的只是改变脚本的运行时间,所以每天都会运行一次。
所以我想知道这是否可能?我担心的是大小不会缩小,因为备份仍会执行仅一天的“3 天备份”。很难解释,所以我会举例说明。
我想要的是:
- 第 1 天 - 运行备份
- 第 2 天
- 第 3 天
- 第 4 天 - 运行备份
- 第 5 天
我担心会发生什么:
- 第 1 天 - 运行备份
- 第 2 天 - 从第 4 天开始应用备份
- 第 3 天 - 从第 4 天开始应用备份
- 第 4 天 - 运行备份
- 第 5 天
crontab 作业如下所示:
5 7 * * * ../rsyncsnapshot.sh 每天 30
脚本看起来像这样
if [ $# != 2 ]; then
echo "Usage: backup.sh interval_name count"
exit 1
fi
NAME=$1
COUNT=$2
TIMESTAMP=`date -u "+%Y-%m-%d %H:%M:%S%z"`
echo "*** Backup started $TIMESTAMP (interval $NAME, count $COUNT) ***"
echo "Deleting $DEST_DIR/$NAME.$((COUNT-1))"
ssh $DEST_HOST rm -rf $DEST_DIR/$NAME.$(($COUNT-1))
for i in `seq $(($COUNT-1)) -1 2`;
do
j=$(($i-1))
echo "Moving $DEST_DIR/$NAME.$j to $DEST_DIR/$NAME.$i"
ssh $DEST_HOST mv $DEST_DIR/$NAME.$j $DEST_DIR/$NAME.$i
done
echo "Copying $DEST_DIR/$NAME.0 to $DEST_DIR/$NAME.1"
ssh $DEST_HOST cp -al $DEST_DIR/$NAME.0 $DEST_DIR/$NAME.1
echo "Copying source ($SRC) to $DEST_HOST:$DEST_DIR/$NAME.0/"
rsync $RSYNC_ARGS $SRC $DEST_HOST:$DEST_DIR/${NAME}.0/
ssh $DEST_HOST touch $DEST_DIR/$NAME.0
TIMESTAMP=`date -u "+%Y-%m-%d %H:%M:%S%z"`
echo "*** Backup ended $TIMESTAMP ***"
echo "Quota as follows:"
ssh $DEST_HOST quota