控制创建的目标目录的文件模式是否可以用于rsync?

控制创建的目标目录的文件模式是否可以用于rsync?

我希望控制以下命令directory-to-be-created中的文件模式位rsync

rsync -a ... <remote-user>@<remote-host>:/some/existing/path/directory-to-be-created/

正如名称所暗示的那样,该目录尚不存在,rsync需要创建它;它尽职尽责地这样做......然而,据我所知总是这是否符合<远程主机>的默认设置umask--chmod=...我无法理解的咒语不会让它做其他事情......

那么是否可以设置创建丢失目标目录的文件模式,如果可以,如何设置?

答案1

rsync本身可能不支持该功能,但您可以使用文件系统ACL确保下面任何新创建的目录都/some/existing/path/具有一组特定的权限。例如:

$ setfacl -dm u::rwx,g::rx,o::r /some/existing/path/

下面新创建的目录现在应该具有手动或通过的/some/existing/path/权限。750rsync

答案2

这个答案让我走上正轨--rsync-path=PROGRAM选项:

--rsync-path=PROGRAM

使用它来指定要在远程计算机上运行什么程序来启动 rsync。当rsync不在默认远程 shell 的路径中时经常使用(例如--rsync-path=/usr/local/bin/rsync)。

注意PROGRAM在 shell 的帮助下运行,因此它可以是您想要运行的任何程序、脚本或命令序列,只要它不会破坏rsync用于通信的标准输入和标准输出。

一个棘手的示例是在远程计算机上设置不同的默认目录以与该--relative选项一起使用。例如:

rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/

所以看来我只能这样做:

rsync -a --rsync-path='umask 0022 && rsync' ...

...预设umask(或者事实上,任何rsync调用远程之前所需的条件:-)

相关内容