按日期 Rsync 文件

按日期 Rsync 文件

我有这个文件结构:

...folders/to/copy
...folders/to/mirror

我一直在做:

rsync --ignore-existing -raz --progress $source $destination

这对于保持两个文件夹树上的所有内容都是最新的非常有用。但现在我只需要对 24 小时前更改的文件执行此操作。我尝试过这样的事情:

rsync -rav `find $source -mtime 1` $destination

问题是这会弄乱文件树并且不能按我的需要工作。有一个更好的方法吗?

我想备份文件结构,使用“文件夹”及其中所有内容的相对路径,从一个地方到另一个地方,只留下超过 24 小时的文件 ( mtime)。

答案1

您可以使用它find | rsync来过滤您有兴趣复制的文件,如下所示

src=/source/folders/to/./copy
dst=/destination/mirrored/folders

find "$src/" -type f -mtime +0 -print0 |
    rsync --dry-run -a -iv --files-from - --from0 / "$dst"

--dry-run当您对一组结果感到满意时,删除。-iv如果您想要更安静的操作,请将其移除。

我应该指出,/./源路径的部分定义了应保留文件路径的点。例如,如果您有一条路径,/source/folders/to/./copy/sub/here.txt那么相应的目的地将变为/destination/mirrored/folders/copy/sub/here.txt。有关详细信息,请参阅文档中的--files-from--relative( -R) 选项。man rsync如果您的源路径是相对的,那也可以。

该解决方案以 GNUfind或其他提供-print0.如果您没有该选项,您也可以删除--from0,但最好替换-print0-exec printf '%s\0' {} +。请参阅以下位置的讨论:GNU find 的 -print0 的 POSIX 替代品

相关内容