scp:如何在传输文件时更改文件夹和文件的所有权

scp:如何在传输文件时更改文件夹和文件的所有权

当我将包含文件的文件夹从用户名为 srv1 的 srv1 传输到用户名为 srv2 的 srv2 时,srv2 上传输的文件夹及其包含的文件将保留所有权 srv1

scp -r /var/www/vhosts/srv1.com/httpdocs/profile_image [email protected]:/var/www/vhosts/srv2.com/httpdocs

有没有办法在传输时立即将目标位置上传输的文件夹/文件的所有者更改为 srv2,而不是事后再执行此操作?

答案1

scp没有可以动态更改所有权的选项,但是rsync...它有-og --chown=user:group...所以,您可以执行以下操作:

rsync -og --chown=srv2 /var/www/vhosts/srv1.com/httpdocs/profile_image [email protected]:/var/www/vhosts/srv2.com/httpdocs

仅更改用户并保留源组...您还可以使用-og --chown=:group注意冒号:) 保持源用户不变或明显改变两者-og --chown=user:group...这些不会影响原始源文件/目录,而是会被发送到目标连接 shell,就好像它们实际上最初同样应用于源文件/目录一样,替换原始源文件/目录的实际所有权属性。

通告

  • 用户(来源机器)必须具有更改原始文件所有权的权限。

  • --archive, -a如果使用该选项,则-og可能不需要该选项。

  • 如果您未指定上述任何或其他用户和组保留选项,则文件/目录所有权将设置为远程用户(root你的情况) 默认情况下。

  • 在处理远程复制/同步工具时rsync,可能值得阅读:使用 scp 复制包含空格的远程文件需要双空格转义。为什么?

  • 你可能想读man rsync并在发出第一个命令之前熟悉其其他复制/同步选项。

相关内容