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


12

我使用此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
什么是文件系统,$BACKUP_MNTPOINT以及挂载了哪些选项?仅对父$BACKUP_MNTPOINT/$USER_HOME目录()或所有创建的目录会发生这种情况吗?不要$BACKUP_MNTPOINT$USER_HOME一个结尾/
terdon

我将XFS用于/home备份驱动器。到目前为止,我认为这仅发生在父目录中。既不$BACKUP_MNTPOINT也不$USER_HOME与斜线结束。编辑:我现在可以确认它仅发生在下面的目录中$BACKUP_MNTPOINT/$USER_HOME
kralyk

因此$BACKUP_MNTPOINT/$USER_HOME具有正确的权限,但任何子目录都没有?请编辑您的问题并添加这些详细信息。另外,请说明是否mkdir $BACKUP_MNTPOINT/$USER_HOME/foo手动创建目录,该目录是否由用户拥有。
terdon

是的,mkdir $BACKUP_MNTPOINT/$USER_HOME/foo创建一个具有用户所有权的目录。
kralyk 2014年

很高兴看到来自的相关信息strace(如伪回答中所指定)。
PavelŠimerda2014年

Answers:


18

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仅在完成父文件夹的所有子文件夹和文件的同步后,才设置父文件夹的权限。


1
哇,我完全没有想到,很好地发现了,谢谢。
kralyk 2015年

0

也许通过strace / truss运行rsync,看看是否从chown()系统调用返回了错误,并确认chown()具有正确的路径和UID / GID。


一个很好的评论,但不是答案。
PavelŠimerda2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.