TL; DR
只通过rsync保留最新的10个备份文件夹
我正在使用rsync将我的文件备份到远程服务器或同一台机器上的另一个目录,如下所示:
SRC="${1}" DEST="${2}" PREFIX="$( date '+%Y-%m-%d__%H_%M_%S' )" rsync --archive \ --progress \ --compress \ --delete \ --delete-excluded \ --link-dest=../current \ --delay-updates \ --partial-dir=".partial-${PREFIX}" \ "${SRC}" "${DEST}/${PREFIX}"
有了这个,我会有几个备份后的以下目录结构
$ ls ${DEST}/ 2017-02-26__16_36_19/ 2017-02-26__16_41_23/ 2017-02-26__16_41_24/ 2017-02-26__16_41_25/ current -> 2017-02-26__16_41_25/
current总是指向已经完成的最新备份。
现在,因为我不知道$DEST是一个本地文件夹还是一个远程服务器地址,我想使用rsync总是删除$DEST里面的所有其他文件夹,这不是最新的10.所以基本上我只想保留最新的10个备份文件夹,并删除其余的。
即使我不知道在同一台计算机上的目录或ssh服务器地址是否触发了rsync脚本,这是否有可能?
rsync没有这个选项(“删除比…更老的所有目录”),你必须通过使用ssh和一个自定义脚本来达到同样的效果。
更好的是,您可以使用rsnapshot来pipe理备份轮换和保留。