rsync无法将文件从服务器A同步到服务器B.服务器B已运行rsync守护程序

时间:2016-01-21 10:47:21

标签: linux perl unix ssh rsync

我试图通过指挥官产品rsync并获得错误跟踪错误。

使用的命令是

rsync -arv -K -O --no-perms --delete --exclude=.svn --exclude=.snapshot sourcepath svn@ServerB:/tasks

下降文件不归svn用户所有,但它们可由svn用户的主要组写入。

如果我尝试登录到serverB,svn用户即可编辑这些文件。只有rsync失败。

我们无法更改文件的所有权,因为webapp需要位于不同的帐户中。

以下是错误消息。

rsync: mkstemp "/tasks/com/media/.QuerySM.task.Yz4zVg" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/media/.QuerySP.task.eqoVbP" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/media/.QueryST.task.8c1Gsn" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/media/.QueryMW.task.Q18EFI" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/parts/.EFParts.task.0sJVJV" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/parts/.FFModel.task.y6UF1t" failed: Permission denied (13)

rsync版本

   rsync  version 3.0.6  protocol version 30

目录权限是775。

我现在发现的有趣的事情是它抛出了这个错误,但它实际上复制了文件并以下面的错误结束。

      sync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6] 

1 个答案:

答案 0 :(得分:0)

如果您的'svn'用户没有对其负责的目录部分的写访问权限,请首先修复这些权限问题。我猜这个问题是缺少对/tasks/com/tasks/parts的写入权限,所以在serverB上:

chown svn /tasks/com/{media,parts}

接下来,如果您对此出现(严重)安全问题感到满意,则可以通过以root身份运行rsync来绕过权限问题:

rsync [other options] --rsync-path="sudo rsync" sourcepath user@serverB:/path/

--rsync-path选项告诉rsync在远程服务器(源或目标)上以root身份运行rsync。要使用它,您需要在serverB上设置sudo,以便在尝试运行rsync时您的用户不会收到密码质询。

请注意,这是一种风险。 Rsync可以做很多事情,授予这样的权限几乎可以授予任何可以在服务器上获取shell的人的root权限。