我正在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
重新运行“仅小文件”副本和“所有文件”副本以查看效果。