告诉 Rsync 在传输过程中跳过当前文件?

告诉 Rsync 在传输过程中跳过当前文件?

有没有办法告诉 rsync 在同步过程中跳过其当前文件,也许通过向它发送特定信号?

我已经知道基于模式的忽略,但这有时对我来说很方便。

答案1

我不熟悉这样的功能,手册页当前版本也没有提及。除了浏览源代码以查找手册页中未提及的“隐藏功能”外,我认为可以安全地假设不存在此类功能。

不过,我同意这听起来像是一个方便的功能。

答案2

遗憾的是,答案是“不”,但有一个错误报告在 rsync Bugzilla 中请求此增强。也许有一天……

答案3

我总是终止 rsync(control-c)并使用 --exclude 选项(可能还有 --delete)重新运行。由于 rsync 保留目标目录的部分更新,因此第二次运行应该会更快,因为您基本上可以从上次中断的地方开始。

您可能还查看了大文件的 partial-dir 选项。

答案4

rsync 功能请求@dean-serenevy 提到的有一个解决方法:

  1. 如果仍然需要,请备份源文件,例如cp --reflink=always --preserve largefile largefile.backup
  2. 截断文件:echo > largefile
  3. 等待 rsync 检测到错误。这可能需要一段时间,但 rsync 至少应该停止向目标文件写入更多数据。检测到错误后,rsync 将重试,发现文件短了很多(1 个字节长,一个换行符),并更新目标以匹配它。
  4. 恢复备份:mv largefile.backup largefile如果 inode 编号无关紧要,cat largfile.backup > largefile如果 inode 编号必须保持不变(以暂时需要两倍空间为代价)。还应考虑所有权、权限、扩展属性、稀疏性和特殊的文件系统功能,例如压缩和重复数据删除。

相关内容