让 rsync 首先更新现有文件,然后再创建新文件?

让 rsync 首先更新现有文件,然后再创建新文件?

我有一个源目录,我会定期使用 rsync 将其同步到目标:

rsync --bwlimit=1600 --recursive --times
      --omit-dir-times --copy-links --modify-window=30
      --inplace --delete-before --progress --stats --whole-file
      --itemize-changes --human-readable ./ /media/0123-4567/

目标媒体是只是同步的正确大小:目标是 1000 MB 分区,源有 990 MB 的文件;从源同步到空目标可以正常工作。

问题是,当我同步到包含旧版本的目标时:一些现有源文件在当前版本中较小,并且添加了一些新文件。总大小保持 990 MB;但 rsync 似乎选择了“先复制新文件,然后更新现有文件”的策略,第一部分不起作用,因为更新后应该释放的空间尚未存在。

                                       version 1     version 2
 files not changed:                     800 MB        800 MB
 new files in v2:                         0 MB         80 MB
 files changed between versions:        190 MB        110 MB 

 total                                  990 MB        990 MB

换句话说,我怎样才能让 rsync更新首先是目标(在我的例子中,这将释放空间),然后才添加新文件

到目前为止,我已经通过两次单独的调用解决了这个问题,只是在这个参数上有所不同:

rsync --existing [...]
rsync --ignore-existing [...]

这将首先更新现有文件,然后复制新文件;有没有办法用一个命令来完成此操作?

答案1

到目前为止,我已经通过两次单独的调用解决了这个问题,只是在这个参数上有所不同:

rsync --现有 [...]
rsync --忽略现有 [...]

是的,这是正确的方法。

这将首先更新现有文件,然后复制新文件;有没有办法用一个命令来完成此操作?

不需要:

  • 从速度角度来看,你只是牺牲了一些微不足道的开销
  • 从文档的角度来看,这比一些隐含的方式更能清楚地说明您正在做什么。

相关内容