rsync 设置组所有者、组权限

Chr*_*ton 11 rsync permissions

我想使用 rsync 将文件从我的计算机传输到远程 Linux 系统。无论本地文件的组所有权如何,我都想在远程端设置这些值。

如果我在远程 Linux 系统上,我可以创建目录并将所有权和权限设置为:

mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory
Run Code Online (Sandbox Code Playgroud)

如果我在本地创建目录,然后使用 rsync(请记住,我本地没有 my_group),我会这样做:

rsync -ae ssh --chmod=ug+rw,Dug+rwx my_directory remoteserver:dest
Run Code Online (Sandbox Code Playgroud)

这有效,但我无法弄清楚如何通过 rsync 设置组所有者。如果我执行 a chmod g+s dest,则 my_directory 具有正确的组所有者,但其中的所有文件的组所有者都不正确。

小智 8

此刻,我正在寻找一种在 rsync 操作中自己执行此操作的方法,而不是在后续操作中。我希望某些文件不是世界可读的并分配一个组,从而限制对该组内的远程服务器进程的访问。但是我没有找到。

我唯一能想到的是:

  1. 使用 --delay-updates 将远程文件放入更具原子性的即时操作分配中
  2. g+rwx,o+rwx 在 rsync --chmod 选项中

然后运行:

ssh remoteserver chgrp -R {groupname} /my/dest/folder/* && \
chmod -R o-rwx /my/dest/folder/*
Run Code Online (Sandbox Code Playgroud)


小智 6

我认为您的命令中缺少 -p 标志..

--chmod

此选项告诉 rsync 将一个或多个逗号分隔的“chmod”字符串应用于传输中文件的权限。结果值被视为发送方为文件提供的权限,这意味着如果 --perms 未启用,此选项似乎对现有文件没有影响