1

当远程机器使用 rsyncd 时,使用以下 rsync 命令可以让您将大量远程文件复制到本地机器:

rsync -R 主机名::'module/path1/file1 module/path2/file2 module/path3/file3 module/path4/file4' /local/path

但是,如果文件数量太多,rsync 会挂起,不会在目标位置创建文件。我正在测试的环境中的限制是 22。对于 22 个文件,它会在几秒钟内完成;有 23 个或更多文件时,它会无限期挂起。

任何人都可以提供可能发生这种情况的原因吗?这是我检查过的一些事情:

  • 两台机器都没有耗尽磁盘空间或内存。
  • 所有文件都可以传输,只要我一次不超过 22 个。(换句话说,位置 23 及以上的特定文件并没有什么特别之处。)
  • 没有权限问题;我有能力读取远程机器上的所有文件,并且可以写入目标目的地。(此外,正如我在上一项中指出的,只要我一次不超过 22 个,我的整个列表中的所有 ~50 个文件都可以传输。)
  • 如果我使用 -n(试运行)选项,什么都不会改变。
4

4 回答 4

1

好的,经过进一步测试,它似乎与参数长度有关。我还没有计算出确切的长度,但我尝试了一组不同的 25 个文件,路径/文件名更短,并且工作正常。所以我想我只需要限制命令的长度。屁股。:\

于 2009-01-31T02:58:28.613 回答
1

没有解释为什么要指定单个文件。最简单的方法是递归地对整个目录进行 rsync,如果需要更多控制,则使用带有适当模式的--includeor标志来匹配。--exclude

如果您的使用确实需要明确指定要备份的每个文件,则使用单独的文本文件列出这些文件并使用--files-from标志调用 rsync。

我已经使用了该--files-from选项。它运作良好。rsync 非常可靠 - 但许多配置选项可能会使学习变得混乱。例如,有一个--cvs-exclude标志可以从备份中排除所有元数据文件,不仅适用于 CVS,也适用于 SVN。非常有用,但绝对不容易被发现。

所有这些选项都在此处的 rsync 文档中有详细说明。

于 2009-01-31T04:06:09.350 回答
0

strace 客户端和服务器,看看是谁造成了问题。它闻起来像 rsync 中的某种错误。

于 2009-01-31T02:55:21.680 回答
-1

让我们假设这是一个错误而不是预期的行为。

由于Rsync是一个开源项目。您可以下载源代码,找到错误并为每个人上传修复程序。您应该首先检查您是否使用的是最新版本。

于 2009-01-31T04:02:17.410 回答