rsync – 只保留10个备份文件夹

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理备份轮换和保留。