我正在使用 Cygwin 中的 rsync 将大规模数据传输从老化的 HP MSA 1000 传输到连接到另一台服务器的新 DAS。我在远程服务器上以只读模式运行守护进程,并在本地复制将文件写入磁盘。
我的一台服务器是一个图像存储库,其中有超过一百万个文件分布在大约 300 个目录中。每个文件平均只有几百千字节。与其他任何服务器相比,这台服务器的问题都更严重。
rsync 过程将运行一段时间 - 有时 20 分钟,有时 1 小时 - 然后它就退出并在给定的文件名处处于空闲状态。
我已验证远程服务器上的文件未损坏,并且已成功在本地驱动器上创建该文件。我在 -vv 模式下运行了 rsync 客户端,但未返回任何内容。我查看了守护进程创建的日志。我查看了处于空闲状态的接口上的网络利用率。我查看了 AV 设置,看看是否有任何问题。我甚至更新了 Cygwin 的最新版本。
我需要做什么才能维持这种联系?
编辑:
客户端系统正在使用命令
rsync.exe server::Drives/f/Repo/ /cygdrive/T/Repo --archive -P -vv
服务器正在使用命令 rsync.exe --daemon --no-detach --config "rsyncd.conf"
rsyncd.conf的内容:
use chroot = false
strict modes = false
hosts allow = 192.168.100.9
log file = c:/rsyncd.log
uid=0
gid=0
[Drives]
path = /cygdrive
read only = yes
编辑:
文件服务器是2003,阵列上的磁盘类型是GPT,阵列的大小约为4 TB。
编辑:
陌生人。。看起来该过程在处理大约 175,000 个文件时确实会出错。当我一次选择一个有问题的目录时,Rsync 运行正常。
编辑:
rsync version 3.0.9 protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
no socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
当从 Cygwin 的同一套文件转到 Linux 安装时,也发生了类似的故障。不过,这比平时晚了几个小时才发生。
答案1
您没有说总数据量,所以我不能确定,但我以前在类似大小的存储库上使用过 rsync。到目前为止,我还没有遇到过这个特定问题。不过,我绝大多数的使用是在 Linux/Unix 设备上,只有偶尔在 Windows 上运行。
要弄清楚到底发生了什么,您可能需要尝试使用其他-v
参数运行 rsync,看看是否可以获得足够的详细信息来查看它在挂起时正在做什么。如果这没有帮助,您可以考虑在strace
或下运行 rsync ltrace
。
作为一种解决方法,您可以尝试--include-from=FILE
指定要包含的目录列表,然后列出您提到的 300 个目录。我不确定这是否会遇到您遇到的相同问题。
如果这不起作用,您可以循环遍历目录列表并使用以下命令分别 rsync 每个目录:
for DIR in $(cat file_of_dirs); \
do rsync.exe server::Drives/f/Repo/$DIR /cygdrive/T/Repo --archive -P -vv; \
done
(为 bash/bourne shell 编写,因为您说您已经安装了 Cygwin。可以只写一行,而行末不需要斜杠。)
显然,这并不能回答为什么 rsync 会挂起的问题,但它应该会让你的文件再次同步。