我正在使用 rsync 进行大规模 200TB 传输。我使用了从互联网上找到的 shell 脚本来生成一些进程,但这里是相关的 rsync 命令本身:
rsync --recursive \
--whole-file \
--inplace \
--sparse \
--no-compress \
--max-alloc=8GiB \
--size-only \
--human-readable \
--info=progress2 \
--log-file="$rsync_file_basename.log" \
--log-file-format="%o=%-7'''b | total=%-7'''l [%i] => %f%L" \
"/mnt/disk${disk_id}/$share_name/$share_subdir/" \
"$target_path" \
>> "$rsync_file_basename.out"
传输进展顺利,但在查看日志时,我发现偶尔会出现两种错误。
主要是这样的:
rsync:[接收方] ftruncate 在“/mnt/remotes/TS140_stuff/pictures/family_1/IMG345.jpg”上失败:资源暂时不可用 (11)
但也包括其中一些:
rsync: [receiver] 在“/mnt/remotes/TS140_stuff/shows/ep1.mp4”上写入失败:资源暂时不可用 (11) rsync 错误:receiver.c(380) 处的文件 IO(代码 11)中出现错误 [receiver= 3.2.7] rsync:[发送者]写入错误:管道损坏(32)rsync错误:io.c(1700)处的文件IO(代码11)错误[发送者= 3.2.7]
现在,目标目录是 SMB 挂载,这是大量数据,因此我预计会出现类似的情况。
但写这篇文章的原因是我可以在目标目的地看到文件,而且它们看起来很好。rsync 是否有某种基于命令使用的重试逻辑?