Rsync
rsync 從伺服器到本地主文件夾,同時保持文件所有權
在嘗試保留文件所有權的同時將網站備份到我的主文件夾。
rsync -az user@server.com:/www/site ~/backup
如果我理解, -a 選項與 -rlptgoD 相同,其中 -o 和 -g 維護所有者和組。對?
要備份的文件都設置為使用者:使用者,不是管理員(共享主機)。
當我執行該命令時,我本地電腦上的所有文件都更改為我的本地使用者:組。
基本問題是如何維護文件的原始所有權?還是我以錯誤的方式解決這個問題?並且應該對文件進行去皮然後傳輸?
除非您已經擁有文件或者您是 root,否則您無法維護文件的所有權和組。(這符合您不能“放棄”文件的原則。)您可以使用該
--fake-super
標誌在擴展屬性中記錄所有權和組,這樣如果您使用足夠的權限進行恢復,您就可以恢復那些以前保存的值。# Backup rsync -az --fake-super user@server.com:/www/site ~/backup # Restore rsync -az --fake-super ~/backup root@server.com:/www/site
如果您無法在遠端系統上以 root 身份登錄,但您(比如說)能夠在
sudo
不提示輸入密碼的情況下執行,您可以像這樣修改命令行:# Restore via sudo rsync -az --fake-super --rsync-path='sudo rsync' ~/backup root@server.com:/www/site
該
--fake-super
標誌還迴避了目標系統上不存在的使用者名和組名的問題(儘管--numeric-ids
如果您決定不使用,則可以選擇--fake-super
)。請注意,它在目標系統上看起來有點奇怪,直到您意識到它確實在後台工作。例如,符號連結在備份時也不再是符號連結。一個潛在的問題是,它
rsync
更喜歡按名稱而不是 UID/GID 來複製所有者和組資訊。如果目標系統上不存在名稱,這可能會導致問題。幸運的是,該--numeric-ids
標誌允許您告訴rsync
通過 UID/GID 而不是名稱進行複制。