rsync-仅保留 10 个备份文件夹

rsync-仅保留 10 个备份文件夹

总结

仅通过 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始终删除其中不是最新 10 个的所有其他文件夹。$DEST所以基本上我只想保留最新的 10 个备份文件夹并删除其余的。

即使我不知道该rsync脚本是否针对同一台计算机上的目录或 ssh 服务器地址触发,这是否可能?

答案1

rsync没有这样的选项(“删除所有早于...的目录”),您必须使用ssh自定义脚本来实现相同的效果。

更好的是,你可以使用rsnapshot管理备份轮换和保留。

相关内容