Rsync
rsync遠端查找前綴主目錄?
我正在嘗試從十分鐘前的遠端目錄中提取所有內容,然後刪除源文件。
我的遠端查找似乎正在工作(在遠端盒子上獨立測試),但是當 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
它是有意義的。