rsync 仅在日期和时间之后创建或修改的文件

Yan*_*nik 6 backup rsync command-line-interface find

目标是仅对在日期之后创建或修改的文件进行 rsync(或使用任何其他提供所需结果的工具)。它应该与包含空格(和/或其他需要转义的字符)的文件名一起使用。

我在 OS X 10.6.5 上成功地使用了这个命令:不过, find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';'我不认为-newermt在 OS X 之外的其他操作系统上工作。

此命令的问题在于它为每个找到的文件运行一次 rsync,这似乎不是正确的方法。我试图;用 a更改最后一个,+以便它等待整个文件列表,但它会刹车(我确实尝试过"+"\+以及其他逃脱方式)。

背景:我正在尝试在远程位置备份我的文件。这些文件有很多原始格式和其他格式的照片(照片有效。每天大约 30GB),由于上传带宽小(ADSL 很烂),虽然网络同步会花费无法使用的时间。因此,我们的想法是在远程位置拥有大量磁盘空间,并每周一次在小型外部硬盘驱动器上传输新/修改过的文件。然后可以轻松地使用 rsync 在远程位置添加新的/修改过的文件。为此,我需要在一周内在外部硬盘驱动器上同步新的/修改过的文件,因此我总是有每个文件的 2 个副本,要么在远程位置保存一周以上的文件,要么在外部硬盘驱动器上保存新的/修改过的文件自上次运输以来。

我打算让这个命令每 10 分钟 (cron) 运行一次,并使用它上次运行的日期和时间。

你能修复我的命令吗?或者您有更好的解决方案吗?

lar*_*sks 7

我对你想要做什么有点困惑。Rsync 本身只会传输新的/修改过的文件。因此,如果您每周一次在硬盘驱动器上传输数据,您可以定期运行 rsync 并且它的带宽不会超过(并且可能低于)您建议使用的解决方案find

所有这些工作find似乎只是在复制已经存在的功能。

如果您真的想使用find,则不需要xargsor 之xargs类的功能;只需这样做:

find ... -print | rsync ... --files-from=-
Run Code Online (Sandbox Code Playgroud)

...“您认为合适的任何其他选项”在哪里。这会导致 rsync 从 stdin 读取文件列表。

  • 我发现。您仍然需要为 rsync 指定一个源。工作命令是:`find 。-newermt "2010-11-23 16:52:50" -print0 | rsync -vuptn -0 --files-from=- 。../rsync_test/` (2认同)