【问题标题】:rsync fails to sync files from server A to server B. Server B has the rsync daemon runningrsync 无法将文件从服务器 A 同步到服务器 B。服务器 B 正在运行 rsync 守护进程
【发布时间】:2016-04-27 13:42:22
【问题描述】:

我正在尝试通过指挥官产品进行 rsync 并在错误后出现错误。

使用的命令是

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

下落的文件不属于 svn 用户,但可以由 svn 用户的主组写入。

如果我尝试以 svn 用户身份登录到 serverB,我可以编辑这些文件。只有 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] 

【问题讨论】:

  • @Maquefel,解决方案对我没有帮助:-(。我不能让 svn 用户成为所有者,因为 webapp 会失败
  • 你的 rsync 版本是多少?您对目录组的权限是什么?你可以创建新文件为 svn 吗?
  • @Maquefel,现在添加到原始帖子中。 3.0.6是版本,775是权限。
  • 不知道,你可以尝试提升linuxquestions.org/questions/linux-server-73/…或者你可以尝试添加--in-place选项

标签: linux perl unix ssh rsync


【解决方案1】:

如果您的“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 访问权限。

【讨论】:

  • 谢谢,但该服务器上的 sudo 访问受到限制:-(
最近更新 更多