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

use*_*647 7 ssh permissions command-line ownership

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

scp -r /var/www/vhosts/srv1.com/httpdocs/profile_image root@777.777.777.77:/var/www/vhosts/srv2.com/httpdocs
Run Code Online (Sandbox Code Playgroud)

有没有办法在传输时立即将目的地传输的文件夹/文件的所有者更改为 srv2,而不是稍后再执行?

Raf*_*ffa 8

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

\n
rsync -og --chown=srv2 /var/www/vhosts/srv1.com/httpdocs/profile_image root@777.777.777.77:/var/www/vhosts/srv2.com/httpdocs\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

注意事项

\n
    \n
  • 用户(计算机)必须有权更改原始文件的所有权。

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

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

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

    \n
  • \n
  • 在发出第一个命令之前,您可能需要阅读man rsync并熟悉其其他复制/同步选项。

    \n
  • \n
\n