有没有办法自动重命名接收器上的现有文件?例如:如果filename
已经存在,它会自动重命名filename
为filename_001
,filename_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)如果你遇到困难。
祝你好运!