僅複製缺失? - 從 /A 複製到 /C 僅 /B 和 /C 上缺少的路徑 - 簡潔的方式

僅複製缺失? - 從 /A 複製到 /C 僅 /B 和 /C 上缺少的路徑 - 簡潔的方式

我想複製自/A/C僅缺少路徑/B/C。 (請假設這些是路徑,並且也可以代表遠端位置,例如透過安裝sshfs

我想知道...有沒有比編寫循環、迭代文件系統並逐一檢查更簡潔的方法?

樹目錄的範例內容/A,/B,/C:

/A:

/A/1abc/qwe
/A/2abc/asd
/A/3abc/zxc
/A/4abc/rty

/B:

/A/2abc/asd
/A/3abc/zxc

/C:

/C/1abc/qwe

預期:複製自/A/C唯一路徑4abc/rty

/A/4abc/rty -> /C/4abc/rty

以實際例子來說明/A,/B,/C,導致這樣的場景:

  • 你進行備份,從某些地方複製/來源/A)對某些/目的地/B)並且有些路徑複製失敗。所以無論如何你都想擁有遺失的副本。所以你發現/另一個目的地/C)可以接受它們,並且您只想複製缺失的。以下是為什麼複製的範例限制/A/B可能失敗:光碟已滿;檔案系統的限制/B(如檔案名稱長度),雖然不存在/C檔案系統; ETC。

答案1

一種解決方案是製作一個聯合安裝B 和 C,其中 C 作為寫分支。然後問題就減少到從 A 複製到 B+C,僅將 B+C 上遺失的檔案複製到 B+C,這可以透過

rsync -a --ignore-existing /A /B+C

對於聯合安裝,一種可能性是UnionFS熔斷器

unionfs-fuse -o cow /C=RW:/B=RO /B+C

或者unionfs:

mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C 

相關內容