想要在脚本中使用 find 和 rsync

想要在脚本中使用 find 和 rsync

我正在尝试制作一个将在 cron 中运行的脚本,它将搜索特定文件名的路径。在路径中可能有更多具有相同文件名的文件夹。如果找到并且它们更新超过 2 天,则 rsync 父文件夹和所有内容。此部分有效,但仅同步 2 天以上的“filename.txt”,仅同步:

#!/bin/sh
find /path/ -name "filename.txt" -type f -mmin -$((60*48)) -exec rsync --ignore-exsiting -az --log-file=/path/ {} /source /destination \;

答案1

我假设通过父文件夹你只是指带有 filename.txt 的文件夹。

您可以使用 find 来打印此文件夹名称,-printf '%h\n'而不是使用 -exec。您可以将其通过管道传输到 shell 循环或 xargs 中,例如:

find /path/ -name "filename.txt" -type f -mtime -2 -printf '%h\n' |
  xargs -i rsync ... {} /destination \;

我认为你需要添加-R到你的 rsync 中,否则所有目录都会叠加在目的地。

相关内容