
我想每晚使用cron
要執行的作業將我的主目錄備份到外部磁碟機rsync
。我不確定 的rsync
符號連結標誌的確切行為。
rsync
的-a
標誌包括-l
標誌(即「將符號連結複製為符號連結」)。這是否僅僅意味著它將複製連結或者它會跟隨連結並複製連結目錄中的所有內容?我想避免這種情況,因為我有指向充滿媒體文件的目錄的鏈接,這將涉及複製我不需要備份的數百GB。- 由於擔心(但不確定)
rsync -a
會複製所有這些媒體文件,我改為添加了該--no-links
標誌。這似乎不是我想要的行為。它只是忽略複製任何有問題的鏈接,因為我確實有我想要複製的鏈接(例如,來自不同項目目錄的公共頭文件的鏈接)。 - 假設上面的#1(沒有標誌
--no-links
)是我真正想要的,它只是複製連結而不複製連結到的文件,那麼連結在備份時會中斷嗎?例如,我可能會將rsync
來源目錄複製/home/me/projects/misc
到/media/extdrive/backup/home/me/projects/misc
.在這種情況下,我認為rsync
它不夠智能,也不會嘗試修正相對目錄更改的符號連結的內容。它是否正確?這沒關係,備份目錄中的連結是否損壞並不重要,只要它們能夠修復並在需要恢復時正常工作即可。
答案1
「將符號連結複製為符號連結」的意思正是它所說的:如果 rsync 在來源目錄中看到符號鏈接,它將在目標目錄中建立相同的符號連結。而已。
(手冊頁下面幾行,不同的選項
--copy-links
描述了相反的行為(始終複製資料),您將其描述為不期望的行為。另請參閱“符號連結”部分:
如果
--links
指定,則使用目標上的相同目標重新建立符號連結。這不是您想要的行為,因為您誤解了
--links
所做的事情,因此要求錯誤的行為(請參閱答案#1)。預設情況下,它會複製目標確切地。
也就是說,如果連結指向絕對路徑(例如
/home/me/projects
),它將繼續指向同一路徑;它不會休息,它只會繼續指向主目錄中的文件,而不是備份中的文件。同時,如果連結指向相對路徑(例如
../../projects
),它將也繼續指向相同的路徑,但由於它相對於符號連結的位置,因此備份中的符號連結也將指向備份中的檔案。不幸的是,似乎沒有任何選項可以為其新基礎翻譯絕對符號連結(只有完全破壞它們的選項)。為了避免出現問題,您應該將現有的符號連結更改為相關符號連結(對於 $HOME 內的連結來說,這通常是一個好主意)。
答案2
@grawity 有一個很好的答案,但這是一些相關資訊的螢幕截圖文件。例如,以下是-l
(小寫字母 L,而不是 1)和選項的確切措辭-L
,它們似乎是所討論的最相關的:
來源:https://linux.die.net/man/1/rsync,或man rsync
Linux 上的手冊頁。
另請注意,-a
( --archive
) 選項還包含-l
其中的選項,這非常棒,因為我真的很喜歡使用該-l
選項將來源中的符號連結保留為目標上的符號連結。從手冊頁 ( man rsync
) 中:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
以下是 的含義-rlptgoD
,也來自man rsync
:
--recursive, -r recurse into directories
--links, -l copy symlinks as symlinks
--perms, -p preserve permissions
--times, -t preserve modification times
--group, -g preserve group
--owner, -o preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files ["such as named sockets and fifos"]
重要的!
如果使用rsync
於外FAT或者胖的然而,檔案系統確實不是支援符號鏈接,也不支援 POSIX 所有者、群組和權限,因此刪除-lpgo
並使用-rtD
代替-a
!如果需要,您-v
也可以添加“詳細”,然後使用-vrtD
。
在這裡查看更多內容:
- [我的答案]將 rsync 與 FAT 和 exFAT 檔案系統結合使用的最佳設置
- rsync 似乎覆蓋 ExFat 上已有的文件
- https://superuser.com/a/384849/425838
- https://learn.microsoft.com/en-us/windows/win32/fileio/filesystem-functionity-comparison
請注意,對於我最喜歡的rsync
命令和說明,包括複製、鏡像、顯示總體進度...
....進行空運行,將 stderr 和 stdout 記錄到(單獨的)文件,顯示統計信息,使用包含路徑檔案和排除文件等等,請參閱我在第二部分下的完整答案,標題為“2. rsync 命令列工具(Linux、Windows with Cygwin)」:https://superuser.com/a/1464264/425838