如何从最新文件开始按时间顺序进行 rsync

如何从最新文件开始按时间顺序进行 rsync

我有以下目录结构

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传输这些文件,保留权限、时间戳、组和用户设置。

相关内容