如何防止 rsync chown 传输的文件?

如何防止 rsync chown 传输的文件?

我在 Linux 服务器上设置了与远程文件系统的 sshfs 连接。我正在从本地服务器向 ftpfs 文件系统执行 rsync。由于此设置的性质,我无法chown在 sshfs 文件系统上执行任何操作。

当我执行 rsync 时,它会在传输完所有文件后尝试更改所有文件的所有者。这会导致更改所有者权限错误,尽管文件传输正常。

使用 rsync 时,有没有办法告诉它不要尝试更改文件的所有权?如果我 rsync 1000 个文件,最终会得到 1000 个chown: permission denied (error 13)错误的日志。我知道出现这些错误不会有什么坏处,因为文件的所有权是由 sshfs 配置本身决定的,但如果没有出现这些错误就更好了。

答案1

您可能像这样运行 rsync:

rsync -a dir/ remote:/dir/

选项-a根据文件相当于:-rlptgoD

      -a, --archive    archive mode; equals -rlptgoD (no -H,-A,-X)

您可能想要删除-o-g选项:

      -o, --owner                 preserve owner (super-user only)
      -g, --group                 preserve group

因此你的 rsync 命令应如下所示:

rsync -rlptD dir/ remote:/dir/

或者@glglgl指出:

rsync -a --no-o --no-g dir/ remote:/dir/

其余正在使用的选项包括:

      -r, --recursive             recurse into directories
      -l, --links                 copy symlinks as symlinks
      -p, --perms                 preserve permissions
      -t, --times                 preserve modification times
      -D                          same as --devices --specials
          --devices               preserve device files (super-user only)
          --specials              preserve special files

答案2

不要通过-o或任何暗示它的其他选项。

答案3

不要使用该-a选项,因为它将包含-p保留权限的选项。对于这种情况,应该-r就足够了。

欲了解更多信息,请参阅man rsync

答案4

我遇到了类似的问题,即rsync无法保留从远程服务器同步的文件和目录的所有者和组。为了纠正这个问题,我复制了/etc/shadow/etc/group/etc/passwd文件。

当我运行rsync下面的命令时,它就可以正常工作,因为它保留了权限、符号链接和所有权。

我已经设置了 ssh 密钥以使用无密码 ssh。

rsync -avpog [email protected]:/usr/local /usr

相关内容