rsync 远程同步到本地仅早于特定时间的文件

rsync 远程同步到本地仅早于特定时间的文件

我想要从远程 rsync 到本地早于(或晚于)特定时间的文件。

我见过这样的回答find /src/path -mtime -1 | rsync ...,但只有当目录在本地可见时才有效。因为它是远程的,所以不可见。

那么我如何find在远程运行并将其结果 rsync 回本地?

答案1

rsync 有一个--list-only选项,它提供远程文件的索引,包括时间戳:

$ rsync --list-only $REMOTE
drwx------            160 2018/09/04 12:55:12 .
-rw-r--r--          1,348 2018/09/04 12:52:33 .bash_profile
-rw-r--r--             55 2018/09/04 12:52:33 .bashrc
...

在此列表上进行过滤以仅选择合适的日期,然后将其输入到后续 rsync 的--files-from参数中(可以通过使用引用 stdin --files-from=-)就可以完成这项工作。

例如,以下内容将把 mtime 在 2018-08-01 和 2018-08-07 之间的文件 rsync 到本地计算机(使用适当的$REMOTE和值$LOCAL_PATH;awk 命令中的注释$5指的是 rsync 输出中的第五列 - 即文件名)

$ rsync --list-only $REMOTE | awk '/2018-08-0[1-7]/ {print $5}' | rsync --files-from=- $REMOTE $LOCAL_PATH

这并不能解决使用 类型说明符的全部问题find,但可以-mtime进一步解析日期字符串(例如使用)来扩展这个问题。date

答案2

您可以find在 rsync 中用作远程路径参数:

rsync -av $REMOTE:'`find /src/path -type f -mtime -1 -print`' $LOCAL_PATH

相关内容