从服务器 rsync 到本地主文件夹,同时保留文件所有权

从服务器 rsync 到本地主文件夹,同时保留文件所有权

将网站备份到我的主文件夹,同时尝试保留文件所有权。

rsync -az  [email protected]:/www/site ~/backup

如果我理解, -a 选项与 -rlptgoD 相同,其中 -o 和 -g 维护所有者和组。正确的?

待备份的文件均设置为user:user,不是admin(共享主机)。

当我运行该命令时,本地计算机上的文件全部更改为位于我的本地用户:组中。

基本问题是如何维护文件的原始所有权?或者我以错误的方式处理这个问题?并且应该对文件进行去皮然后传输?

答案1

除非您已经拥有这些文件或者您是 root 用户,否则您无法维护文件的所有权和组。 (这符合不能“泄露”文件的原则。)您可以使用该--fake-super标志来记录扩展属性中的所有权和组,这样,如果您使用足够的权限进行恢复,则可以恢复那些以前保存的值。

# Backup
rsync -az --fake-super [email protected]:/www/site ~/backup

# Restore
rsync -az --fake-super ~/backup [email protected]:/www/site

如果您无法以 root 身份登录远程系统,但是您(比如说)能够sudo在不提示输入密码的情况下运行,那么您可以像这样修改命令行:

# Restore via sudo
rsync -az --fake-super --rsync-path='sudo rsync' ~/backup [email protected]:/www/site

--fake-super标志还可以避免目标系统上不存在的用户和组名称的问题(尽管--numeric-ids如果您决定不使用,则可以选择--fake-super)。请注意,它在目标系统上看起来有点奇怪,直到您意识到它确实在后台运行。例如,符号链接在备份时也不再是符号链接。

一个潜在的问题是更rsync喜欢按名称而不是 UID/GID 复制所有者和组信息。如果目标系统上不存在这些名称,这可能会导致问题。幸运的是,该--numeric-ids标志允许您rsync通过 UID/GID 而不是通过名称进行复制。

相关内容