我有一个 rsync 命令,用于将远程服务器中的目录备份到安装在我服务器上的 LAN 上的本地 NAS。我使用 con 来调用该命令
rsync --rsh='ssh -pxxx' -rultxz xxx.xxx.xxx.xxx:/path/to/directory/ /media/mountpoint/directory/
问题在于目录没有获得适当的权限,这会干扰传输。以下是发生的情况:挂载点的权限为 777
第一个创建的文件夹获得 744
RSync 失败,因为它无法添加更多文件和目录
mkdir: Permission denied (13)
这些文件夹是在本地创建的,其用户 ID 和组在系统中都不存在(1028)。我猜这些是来自远程位置。
问题是:如何控制接收端创建的文件夹/文件权限,以便我可以将它们映射到本地用户并设置权限?
我尝试使用 -p 标志,并且
--chmod=u+rwx,g+rwx,o+r
但这并没有什么区别。
答案1
问题原来出在挂载本身。通过 cron 调用 RSync 的用户不是挂载点的所有者,因此无法更改目录的权限/所有者。这就造成了用户创建了无法读取的文件夹的情况。
解决方案是在命令中添加 --super 并将用户纳入 sudo 组(然后重新启动)