我在 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