查找并rsync?


24

我希望能够搜索超过14天和超过10k的文件,而不是将那些找到的文件rsync到目的地。

有没有办法组合这两个命令?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

Answers:


33

您可以使用下面列出的选项之一将find的输出发送到rsync中。

方法1

这两个选项非常相似,它们都假定您要将目录更改到某个位置,然后find从那里运行命令。

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

您还可以使用管道在以下位置提供列表:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

方法#2

该方法可以在任何地方运行。

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P:文件名以及在其下找到该文件的命令行参数的名称。这样,您可以使用任何src目录,而无需先进入src目录。

参考文献

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.