使用 bash 和 rsync 备份

使用 bash 和 rsync 备份

有没有办法自动重命名接收器上的现有文件?例如:如果filename已经存在,它会自动重命名filenamefilename_001filename_002等等......

到目前为止我所得到的是:

$ rsync -rh --progress --stats --exclude '.thumb' \
    --update --perms /origin /destination

顺便说一句,我知道 rsync 必须--ignore-existing“跳过更新接收器上存在的文件”,但我想我需要的是类似的东西--rename-existing

答案1

如果你希望保留数据集的增量版本(不使用版本控制例如 git 建议这将是另一种替代方法)考虑使用rsnap代替rsync

它允许您对文件夹或文件集进行快照,以便您可以恢复整个文件在任何给定时间点的状态。它不会保存整个文件的多个副本,而应该只保存它们之间的差异,从而节省您存放所有重复文件的空间。

由于它使用 rsync 在后台复制文件,因此您可以将 rsync 选项附加到命令末尾。例如,如果您要保留十份备份,您可以执行以下操作:

$ rsnap 10 /origin /destination -- --progress --stats \
    --exclude '.thumb' --update --perms

答案2

--backup--suffix选项(至少在 v3.0.8 中),但它们不能完全满足您的要求,因为它们--suffix是固定的并且不是自动递增的(cp有一个很好的自动递增备份后缀选项)。我能想到的最好的办法是使用日期时间戳作为后缀,如下所示:

SUFFIX=`date '+%Y-%m-%d-%H:%M:%S'`
rsync -rh --progress --stats --exclude '.thumb' \
  --backup --suffix="$SUFFIX" \
  --update --perms /origin /destination

答案3

我也会考虑使用git这是一种开源版本控制软件。虽然学习起来有点困难,但听起来它很适合你正在做的事情。它还使用 ssh、ftp 和其他一些传输协议。它是一款用于镜像存储库、跟踪更改等的好工具。它还具有出色的文档以及一个非常活跃的 irc 频道(webchat.freenode.net#git)如果你遇到困难。

祝你好运!

相关内容