Rsync

rsync 從伺服器到本地主文件夾,同時保持文件所有權

  • September 25, 2021

在嘗試保留文件所有權的同時將網站備份到我的主文件夾。

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 而不是名稱進行複制。

引用自:https://unix.stackexchange.com/questions/421932