我使用此 rsync 调用来备份我的主目录:
rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"
rsync 手册页说 -a 意味着 -g 和 -o (以及其他开关),这应该保留所有权。但是我注意到,如果 下不存在目录$BACKUP_MNTPOINT/$USER_HOME
,则会使用 root:root 所有权而不是正确的所有权创建该目录。 (这只发生在 正下方的目录中$BACKUP_MNTPOINT/$USER_HOME
)。这是为什么?
$BACKUP_MNTPOINT
是本地安装的驱动器。$BACKUP_MNTPOINT/$USER_HOME
确实拥有正确的所有权和权限。也不$USER_HOME
以$BACKUP_MNTPOINT
斜杠结尾。
源文件系统和目标文件系统都是 XFS,并且运行时mkdir $BACKUP_MNTPOINT/$USER_HOME
会创建一个具有预期所有权的目录。
答案1
rsync
我在使用将系统备份到服务器时遇到了类似的问题。我用了:
rsync -aAXSHPr \
-e ssh \
--rsync-path="sudo /usr/bin/rsync/" \
--numeric-ids \
--delete \
--progress \
--exclude-from="/path/to/file/that/lists/excluded/folders.txt" \
--include-from="/path/to/file/that/lists/included/folders.txt" \
/ USER@SERVER:/path/to/folder/where/backup/should/go/
解决办法是,其实并没有什么问题。我怀疑rsync
您在看到它创建了权限设置错误的文件夹后就中止了该过程。关键是rsync
只有在同步完父文件夹的所有子文件夹和文件后才设置父文件夹的权限。
答案2
也许通过 strace/truss 运行 rsync 并查看是否从 chown() 系统调用返回错误,并确认 chown() 具有正确的路径和 UID/GID。