我想使用 rsync 将文件从我的计算机传输到远程 Linux 系统。无论本地文件的组所有权如何,我都想在远程端设置这些值。
如果我在远程 Linux 系统上,我可以创建目录并将所有权和权限设置为:
mkdir my_directory
chown :my_group my_directory
chmod 775 my_directory
如果我在本地创建目录,然后使用 rsync(请记住,我本地没有 my_group),我会这样做:
rsync -ae ssh --chmod=ug+rw,Dug+rwx my_directory remoteserver:dest
这可行,但我不知道如何通过 rsync 设置组所有者。如果我执行chmod g+s dest
,my_directory 具有正确的组所有者,但其中的所有文件都有错误的组所有者。
答案1
此时此刻,我正在寻找一种方法来自己在 rsync 操作中执行此操作,而不是在后续操作中执行此操作。我希望某些文件不是所有人都可读的,并分配一个组,从而限制对该组内远程服务器进程的访问。但我还没有找到。
我唯一能想到的就是:
- 使用 --delay-updates 使将远程文件放入更原子、更即时的操作中
- rsync --chmod 选项中的 g+rwx,o+rwx
然后运行:
ssh remoteserver chgrp -R {groupname} /my/dest/folder/* && \
chmod -R o-rwx /my/dest/folder/*
答案2
我认为您的命令中缺少 -p 标志。
--chmod
此选项告诉 rsync 将一个或多个逗号分隔的“chmod”字符串应用于传输中文件的权限。结果值将被视为发送方为文件提供的权限,这意味着如果未启用 --perms,此选项似乎对现有文件没有影响。