我有一个源目录,我会定期使用 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 --忽略现有 [...]
是的,这是正确的方法。
这将首先更新现有文件,然后复制新文件;有没有办法用一个命令来完成此操作?
不需要:
- 从速度角度来看,你只是牺牲了一些微不足道的开销
- 从文档的角度来看,这比一些隐含的方式更能清楚地说明您正在做什么。