rsync 保存并恢复用户 ID/组 ID

rsync 保存并恢复用户 ID/组 ID

我试图了解如何在使用执行备份时保存和恢复用户/组rsync。可能是我完全搞错了,但我正在运行以下命令:

 rsync -axqHAXWESR --fake-super --no-R --rsync-path="rsync --fake-super" /path/to/src/ <user>@<ip>:/path/to/dst/

然后我进入 <ip> 并列出 /path/to/dst/ 下的文件。不出所料,它们属于 <user>。然后我运行了以下命令:

 getfattr -dm '' -- /path/to/dst/*

我不确定输出的各个部分意味着什么,但它的结尾似乎保存了正确的用户 ID/组 ID。这是一个示例输出:

# file: /path/to/dst/some_file
user.rsync.%stat="100755 0,0 1000:100"

(事实上​​,some_file 最初归用户 ID 1000 和组 ID 100 所有)。

然后,我将 <ip> 中的内容恢复到我的机器上(恢复到不同的目录中):

 rsync -axqHAXWESR --fake-super --no-R --rsync-path="rsync --fake-super <user>@<ip>:/path/to/dst/ /path/to/import/

/path/to/import 下的文件(不出所料)具有的用户 ID/组 ID whoami(最初并不拥有某些文件)。使用getfattr/path/to/import/ 下的文件显示原始用户 ID/组 ID 仍然保存在 XATTR 内。

现在,我试图弄清楚如何将这些原始用户 ID/组 ID 应用于导入的文件,但似乎找不到如何操作。我已经尝试将 XATTR 转储到文件中,用于getfattr -Rd文件,然后使用 恢复它们setattr --restore。但似乎不起作用。用户 ID/组 ID 仍为whoami

将非常感激任何帮助。

答案1

这些属性是 rsync 特有的;它可以--fake-super“恢复”它们。

但是从这样的备份恢复时,rsync 接收方会不是需要--fake-super,只有发送者才需要。(在发送者端,此选项意味着“读取 rsync.%stat 而不是查看实际状态”,在接收者端,它意味着“写入 rsync.%stat 而不是执行实际的 chown/chmod”。)

收件人但是,需要以 root 权限运行,因为普通用户无法chown文件。

相关内容