Rsync

rsync遠端查找前綴主目錄?

  • November 6, 2020

我正在嘗試從十分鐘前的遠端目錄中提取所有內容,然後刪除源文件。

我的遠端查找似乎正在工作(在遠端盒子上獨立測試),但是當 rsync 使用它時,我的使用者的主路徑將作為查找輸出的前綴,如下所示:

rsync -avz --dry-run --remove-source-files --files-from=<(ssh spot@host "find /mnt/volume_2/partners/test/uploads/ -amin +10 -type f,d -print0") spot@host:. .

receiving incremental file list
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1054" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1105" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1105/subfile-1105" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1101" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1056" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1058" failed: No such file or directory (2)

我花費的時間比我想承認的嘗試解決這個問題的時間要多,但沒有成功。我希望這裡有人能很好地為我指明正確的方向。

謝謝!

rsync 看錯了地方,因為這些路徑是相對的(來自 rsync 手冊頁,強調我的):

–files-from=文件

$$ .. $$ 從 FILE 中讀取的文件名都是相對於源目錄的

將絕對路徑發送到files -from選項,但不要另外定義根 (/) 以外的源目錄。這應該可行 - 我在主機名後替換了一個字元:

rsync -avz --dry-run --remove-source-files --from0 --files-from=<(ssh spot@host "find /mnt/volume_2/partners/test/uploads/ -amin +10 -type f,d -print0") spot@host:/ .

或者- 當您真正想要處理目標中的相對路徑時特別有用 -告訴 find 發出相對路徑並實際使用它們:

ssh spot@host "cd /mnt/volume_2/partners/test/uploads/; find -amin +10 -type f,d -print0" | rsync -avz --dry-run --remove-source-files --from0 --files-from=- spot@host:/mnt/volume_sfo2_01/partners/test/uploads/ .

請注意,我將<()重定向切換到普通|管道,以實現更好的互操作性和更少的意外,同時轉義命令以包含在腳本中。我還在您的評論之上添加了內容,因為輸入現在以空值分隔,因此告訴rsync--from0它是有意義的。

引用自:https://serverfault.com/questions/1041586