我使用以下命令维护我的电子邮件帐户的备份:
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
?即使两台计算机之间的用户名不相同(备份服务器上缺少一些用户名),是否可以将文件和权限从目标完全恢复到源。
答案1
复制的rsync
是文件的数字用户 ID,无论该文件是否存在于目标系统上。如果具有该 ID 的用户不存在ls
等,则只会显示该数字而不是名称。如果该用户 ID 属于目标系统上的另一个用户名,则该用户现在将拥有该文件。
在这种情况下,备份和恢复将会顺利进行。
答案2
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.
答案3
就您的情况而言,真正的问题出现在恢复文件时。关键是当您恢复文件时指定所需的所有者/组。--chown=vmail:vmail
假设您已经在要恢复到的新机器上创建了用户 vmail,您可以发出以下命令:
sudo rsync -av --chown=vmail:vmail --force --delete --progress user@my_backup_server:/home/user/backups/vmail/ /vmail/
这样做意味着只要您可以与该用户进行 rsync 操作(这在您的示例中已经暗示为真),谁拥有备份服务器上的文件并不重要。