在过去几年中,我一直使用rsync one-liner将我的Mac Mini桌面(OSX 10.9,2.5 GHz i5,4 GB RAM)上的重要文件夹备份到FreeNAS盒子(0.7.2 Sabanda修订版) 5266,Pentium D 2.66 GHz,822MiB RAM [由系统报告,我认为那里有1 GB])。我正在FreeNAS框上运行rsync守护进程。最近,这些转让已无限期挂起。我做了通常的Google-fu,无法确定问题的根源或解决方案。
单线是:
rsync -rvOlt --exclude '.DS_Store' \
--exclude '.com.apple.timemachine.supported' \
--delete /Volumes/Storage/Music/Albums/ 192.168.1.100::albums
我尝试过启用-vvv
和--progress
,但是没有模式可以分辨出什么不挂起,什么不挂起。哎呀,如果我重试,同一个文件可能会在转移过程中挂在不同的位置,或者根本不挂起。干运行(-n
)并不总是成功。我唯一的“成功”就是实现超时(--timeout=10
)并一遍又一遍地重新运行命令。最终,我一路走来,但不能保证成功,并且步伐不可接受。我已经达到了一个我无法通过的文件。
Mac Mini通过5 GHz连接到我的路由器。 FreeNAS盒连接到100 mbit端口上的同一个路由器。当传输实际进行时,rsync --progress
报告2.5-4 MB / s。根据--progress的说法,挂起就是这样 - 据我所知,没有数据传输。
我需要有关诊断和解决方案的帮助。
答案 0 :(得分:15)
我一次又一次地遇到同样的事情,如果你放弃-v选项似乎有帮助(如果你需要那个输出会很烦人)。
答案 1 :(得分:11)
当远程设备空间不足时,我发生了这种情况。使用--verbose
选项时,错误不会显示;关闭它会产生一些STDERR输出,说明远程设备空间不足。当我释放一些空间时,我能够使用--verbose
再次运行rsync,一切都很顺利。
答案 2 :(得分:9)
我遇到了同样的问题。删除-v对我没用。我的用例略有不同,因为我从源(EXT4)到ExFAT。对我来说问题是rsync试图保留设备文件和权限,而ExFAT并不支持这些文件和权限。我正在使用-hrltDvaP
个开关。 -D
和-a
切换似乎是我的问题。 -a
开关转换为-rlptgoD (no -H,-A,-X)
。 -p
,-g
和-o
切换似乎是我的根本原因,因为rsync在运行时期间对其中一个或所有这些切换进行了操作。删除-a
并明确指定-Prltvc
个开关对我有用。
bkupcmd="nice -n$nicelevel /usr/bin/rsync -Prltvc --exclude-from=/var/tmp/ignorelist "
答案 3 :(得分:4)
尝试使用-整个文件/ -W 。 此命令禁用rsync增量传输算法。 那就是我们的工作(从WSL到OSX)
我们的完整同步标志为 -avWPle
(e是因为我们正在使用ssh,并且必须是最后一个标志)
答案 4 :(得分:3)
我正在使用openSUSE 13.2 Linux,rsync版本3.1.1-2.4.1.x86_64,我遇到了类似的问题,在我的笔记本电脑和外部硬盘之间进行rsync,目标设备肯定有足够的可用空间。
我以为我得到了一个改进,省略了选项-v,但是在10分钟后它再次悬挂:strace说: select(5,[],[4],[],{60,0})= 0(超时)
使用“iotop”我会看到确认rsync进程不再有重要的磁盘IO。
使用--bwlimit删除-v选项和限制带宽都没有解决问题。
答案 5 :(得分:2)
从硬盘到FAT32 USB驱动器进行rsync时遇到了类似的问题。在我的情况下,rsync已经在不到一秒的时间内冻结了,之后没有反应......用CTRL + C留下它。
发现问题是在硬盘上使用硬链接并在USB驱动器上安装FAT32文件系统,这不支持硬链接。
Formatting the USB drive with ext4为我解决了这个问题。
答案 6 :(得分:1)
我遇到了同样的问题,因为我在rsync期间内存不足。创建了一个交换文件并解决了问题。
答案 7 :(得分:1)
在我的情况下,rsync实际上并没有失败。
我有常规的服务器备份,可以传输超过500GB以上的大文件,并指定了--append-verify
或--checkusm
超过ssh
的参数。
分析后发现,一旦客户端完成文件检查,服务器端检查就会开始。这意味着在服务器运行时,它会检查客户端处于挂起和冻结状态-在服务器上运行htop
以使rsync正常工作。
如果rsync
在服务器上以守护进程模式运行并且使用rsync
协议而不是ssh
进行传输,则这可能不是问题。
有关说明,这个非常长的等待将触发SSH超时和一条rsync: connection unexpectedly closed (254 bytes received so far) [sender]
错误消息,解决方法是将ClientAliveInterval 120
和ClientAliveCountMax 720
添加到/etc/ssh/sshd_config
。
答案 8 :(得分:1)
我在带有硬链接的目录中的3.0.9上经常看到这种情况,但在3.1.3上也发生过这种情况。
Debian bug 820916中有一个很好的分析:当其内部套接字被错误塞满时,rsync
可能会陷入僵局。
这可能是几天前(2020年6月)在3.2 release中解决的:
当过多的消息阻塞所有I / O缓冲区时,请避免挂起。
我能想到的唯一好的解决方法是,如果问题不是持久存在,则将timeout
放在其前面:timeout rsync <args> <source> <destination>
,然后重试。如果它对您来说是持久的,那么您是可以调试它的幸运者:D
答案 9 :(得分:0)
很可能不是&#34;你的&#34;问题,但是当我研究类似的行为时,我偶然发现了这个问题:
我正在观察&#34;悬挂&#34;当目标站点有太多的负载。例如。在我的一个小型企业服务器上,有人正在重新启动他的IMAP帐户并下载大批数据并运行一个写入数据的备份作业。
在这种情况下,我注意到rsync的性能急剧下降。在目标机器上top
的高负载值中很明显,即使CPU和Mem都很好。
等待进程完成每次都有所帮助,或者稍后中断并尝试rsync。
答案 10 :(得分:0)
当目标计算机上的用户没有对目标文件夹写入权限时,也会发生这种情况 您可以尝试向其他目标文件夹提供写入权限:
sudo chmod -R o+w /path/to/target-folder
答案 11 :(得分:0)
在Ubuntu 16上出现rsync挂起问题。以上选项均无济于事。问题出在源驱动器(外部SSD)上,该驱动器突然出现故障。我尝试了几次磁盘检查,但都卡住了。最终重新启动系统,磁盘突然又变得可访问。
答案 12 :(得分:0)
Holger Ohmacht aka h8ohmh / 8ohmh:
据我调查,问题出在文件系统缓冲区/硬盘/硬件互通的使用上。
本地驱动器的临时解决方案(例如USB3 <-> HD):用于轮询不断变化的磁盘空间的脚本。如果没有可用的可用磁盘空间更改,则rsync停滞,必须重新启动
cmd="rsync -aW --progress --stats --preallocate --super \
<here your source dir> \
<here your dest dir>"
eval "$cmd" &
将
rm ./ndf.txt
rm ./odf.txt
while [[ 0 == 0 ]]; do
df > ./ndf.txt
cmp ./odf.txt ./ndf.txt
res="$?"
echo "$res"
if [[ $res == 0 ]]; then
echo "###########################################"
ls -al "./ndf.txt"
ls -al "./odf.txt"
killall rsync
eval "$cmd" &
else
cp ./ndf.txt ./odf.txt
fi
sleep 60
done
<source dir>
等更改为您的路径!
就我而言,它总是因使用rsync的--preallocate
选项而停顿(通常是因为磁盘性能更好并且可以恢复连续的块),只要磁盘和文件系统驱动程序仅在此解决方案上不能正常工作>