rsync 在小文件上挂起,没有错误消息

rsync 在小文件上挂起,没有错误消息

我正在rsync -rvhe ssh --partial-dir=path/to/partial/dir dir_to_copy remote_server:path/to/target/directory尝试将本地目录复制到远程服务器。我也曾在不使用--partial-dir论证的情况下尝试过这一点。 rsync 的本地副本是版本 3.1.3(包含在 WSL 中),远程版本是 3.1.1(包含在远程 Ubuntu 安装中)。我已经成功完成了大多数文件的此过程,我使用压缩 ( -z) 并排除了大文件,现在我也尝试通过复制大文件来完成此过程。

然而,rsync 只挂在某些文件上。这会在 1) 传输和 2) 检查传输是否已完成时发生。为了进一步详细说明这一点,对于 1),我看到部分传输出现在/path/to/partial/dir(如果我按预期省略命令,我还看到目标目录中的部分文件--partial-dir),有时传输甚至在部分文件中完成事情停止之前的目录。当 2) 发生时,即使文件已经存在于远程服务器上,传输也会停止。

此外,rsync 继续在我的本地计算机和远程服务器上运行,它只是停止执行任何操作。因此,它不会给我诊断问题带来任何错误。当我使用 终止本地任务时^C,它会返回rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(644) [sender=3.1.3],但它不会立即将我返回到终端提示符 - 在它表示收到SIGINT之前打印[sender] io timeout after 60 seconds -- exiting然后将我返回到终端提示符后,它会挂起一段时间。

这听起来与此处描述的类似:rsync 不断停止在一个目录上,没有错误,但我不能使用他们的解决方案,即使用cp,因为我有超过 10 GB 的数据要传输,并且不想冒复制中断并必须从头开始的风险。

有谁知道如何确定根本原因并解决此问题?谢谢!

答案1

您错过了-t捕获时间的标志,因此rsync必须退回到校验和来验证副本。这是非常慢的,很可能是明显减速的原因。

试试这个,

rsync -rtvh dir_to_copy remote_server:path/to/target/directory

重新运行“仅小文件”副本和“所有文件”副本以查看效果。

相关内容