将网站备份到我的主文件夹,同时尝试保留文件所有权。
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 而不是通过名称进行复制。