使用 rsync 保留文件和文件夾權限
我使用以下命令維護我的電子郵件帳戶的備份:
sudo rsync -av --delete --progress -e "ssh -p pNumber" --rsync-path="/usr/bin/rsync" /vmail/ user@my_backup_server:/home/user/backups/vmail/
來源:大多數電子郵件文件夾歸使用者所有
vmail
。目標(備份伺服器):系統沒有名為
vmail
.我的問題是,即使目標機器沒有名為的使用者,上述命令是否會保留文件和目錄權限
vmail
?即使兩台機器之間的使用者名不同(備份伺服器上缺少一些),是否可以將文件和權限完全從目標恢復到源。
複製的是
rsync
文件的數字使用者 ID,無論它是否存在於目標系統上。如果具有該 ID 的使用者不存在,ls
等等將只顯示該數字而不是名稱。如果該使用者 id 屬於目標系統上的另一個使用者名,則該使用者現在將擁有該文件。在這種情況下,備份和恢復將毫無問題地工作。
rsync 如何保留文件的所有權取決於兩件事:
- 您是目的地的超級使用者(root)嗎?
否則,您無法使用您自己以外的其他使用者創建文件和目錄。
- 您正在使用哪些選項標誌?
該
-a
選項包括旨在保留所有權-o, --owner
的 選項。-g, --group
在文件系統級別,使用者和組所有權分別儲存在 UID 中。GID 編號。當沒有從 UID/GID 到使用者名和組名的映射時,工具只會顯示這些數字。
同名的使用者和組在不同的系統上可以有不同的 UID/GID 號。
預設情況下,rsync 將嘗試通過使用者名來匹配所有權。組名。換句話說,當使用者
vmail
是源文件的所有者時,rsync 將使使用者vmail
成為目標文件的所有者(即使他們有不同的 UID/GID 編號)。這通常是非常有彈性的並且對人類來說是最可預測的,因為我們通常不會以 UID/GID 數字的形式查看所有權。
vmail
當遠端目標上不存在匹配的使用者時,將發生備份方案。然後,Rsync 將保留實際的底層 UID/GID 編號,並且vmail
源上使用者的 UID 編號將用於設置所有者。當您反轉 rsync 方向並恢復備份時,這應該會保留正確的所有權。
-o, --owner This option causes rsync to set the owner of the destination file to be the same as the source file, but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super options). Without this option, the owner of new and/or transferred files are set to the invoking user on the receiving side. The preservation of ownership will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion). --numeric-ids With this option rsync will transfer numeric group and user IDs rather than using user and group names and mapping them at both ends. By default rsync will use the username and groupname to determine what ownership to give files. The special uid 0 and the special group 0 are never mapped via user/group names even if the --numeric-ids option is not specified. If a user or group has no name on the source system or it has no match on the destination system, then the numeric ID from the source system is used instead. See also the comments on the "use chroot" set‐ ting in the rsyncd.conf manpage for information on how the chroot setting affects rsync’s ability to look up the names of the users and groups and what you can do about it.