Shell-Script

想在腳本中使用 find 和 rsync

  • July 2, 2015

我正在嘗試製作一個將在 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 \;

我假設父文件夾只是指帶有 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,否則所有目錄都將疊加在目的地。

引用自:https://unix.stackexchange.com/questions/213514