2016-09-21 25 views
0

我有以下結構跳過:
的Rsync - 複製符號鏈接的目錄,但如果它們指向的文件

/source/link1/->/dir1 
/source/link2/->/dir2 
/source/link1/file2 
/source/link1/link11->/dir2/file21 

link=symbolic link, file=real file. 

在目標(遠程)在源文件夾中的「根」目錄鏈接應該被複製作爲目錄,並且/source/link1,/source/link2文件夾下的鏈接不應該被複制,或者它們應該僅作爲鏈接被複制(以避免重複結構)。目標結構如下:

/target/link1 - directory 
/target/link2 - directory 
/target/link1/link11->/target/link2/file21 
/target/link1/file2 

如何使用rsync保持該狀態? 每日同步需要 - 每天都需要同步目標和源文件夾,rsync應該與--delete命令一起使用。

回答

2

的Rsync具有與連接處理(從該名男子頁)多種選擇:

-l, --links     copy symlinks as symlinks 
    -L, --copy-links   transform symlink into referent file/dir 
     --copy-unsafe-links  only "unsafe" symlinks are transformed 
     --safe-links   ignore symlinks that point outside the tree 
     --munge-links   munge symlinks to make them safer 
    -k, --copy-dirlinks   transform symlink to dir into referent dir 
    -K, --keep-dirlinks   treat symlinked dir on receiver as dir 

如果恰巧頂級鏈接是「不安全」和其他鏈接都是「安全」的,那麼--copy-unsafe-links就會爲你工作。

否則,我會建議你使用一個循環來同步的頂級目錄一次一個:

rsync -a --delete /source/link1/ /target/link1/ 

注意-a意味着--links,因此目錄內的任何鏈接都將被複制作爲鏈接,逐字。如果使用尾隨/來取消引用它(即它在樹rsync正在掃描的範圍之外),則頂級link1將被視爲目錄

相關問題