![如何从最新文件开始按时间顺序进行 rsync](https://linux22.com/image/141040/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%9C%80%E6%96%B0%E6%96%87%E4%BB%B6%E5%BC%80%E5%A7%8B%E6%8C%89%E6%97%B6%E9%97%B4%E9%A1%BA%E5%BA%8F%E8%BF%9B%E8%A1%8C%20rsync.png)
我有以下目录结构
item_1
item_12
item_33
..etc..
现在我想从最近的文件开始同步,并按时间顺序同步列表。
或者选项 2:如何 rsync 不超过 1 周的目录。
背景:我在慢速驱动器上有几 TB 的数据,需要将它们同步到快速驱动器上。现在跳过一次同步所有数据,我想只同步最近的数据。
是否可以仅使用 rsync 来完成此操作,还是必须将 find 与 rsync 结合使用?
答案1
rsync
始终对其源文件进行排序,因为这样可以更轻松地比较目标上的文件列表,以查找已删除的文件、已添加的新文件以及已更新的文件。
在极端情况下,您可以找到最新的文件并rsync
仅使用单个源文件多次运行;这是否有效值得怀疑。
您需要决定如何选择要同步的目录。如果您只查看目录时间戳,那么您可能会错过该目录中已更新的文件,甚至其中的子目录和文件。
如果您真的只想同步最近的文件,而不担心删除目标上已从源中删除的文件,那么您可以使用类似以下内容的方法:
find topdir -mtime -7 -type f -print0 > /tmp/list-of-files
rsync -ptgo --files-from=/tmp/list-of-files --from0 ./ destinationdir/
首先构建一个不到 7 天的文件列表,并将它们存储在一个以 null 结尾的临时文件中(以便嵌入空格和换行符的文件名仍然可以正常工作)。请注意,您可能需要找到一个安全的位置来放置此列表,因为将其放入/tmp
会导致安全问题,尤其是使用上述固定名称时。
接下来,您将指示rsync
传输这些文件,保留权限、时间戳、组和用户设置。