TL;博士
仅通过 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 个备份文件夹并删除其余部分。
即使我不知道是否rsync
为同一台机器上的目录或 ssh 服务器地址触发了脚本,这是否可能?
rsync
没有这样的选项(“删除所有早于...的目录”),您必须通过使用ssh
自定义脚本来达到相同的效果。更好的是,您可以使用它
rsnapshot
来管理备份轮换和保留。