即使使用 -a,rsync 也不会保留目录所有权

即使使用 -a,rsync 也不会保留目录所有权

我使用此 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。

相关内容