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) 运行一次,并使用它上次运行的日期和时间。
你能修复我的命令吗?或者您有更好的解决方案吗?
我对你想要做什么有点困惑。Rsync 本身只会传输新的/修改过的文件。因此,如果您每周一次在硬盘驱动器上传输数据,您可以定期运行 rsync 并且它的带宽不会超过(并且可能低于)您建议使用的解决方案find
。
所有这些工作find
似乎只是在复制已经存在的功能。
如果您真的想使用find
,则不需要xargs
or 之xargs
类的功能;只需这样做:
find ... -print | rsync ... --files-from=-
Run Code Online (Sandbox Code Playgroud)
...
“您认为合适的任何其他选项”在哪里。这会导致 rsync 从 stdin 读取文件列表。