我在远程 Linux Ubuntu 服务器上有一个大约 35 GB 的文件。本地运行的是 Windows XP,因此我使用 SSH 连接到远程 Linux 服务器(具体来说,我使用的是名为SSH 安全 Shell 客户端版本3.3.2)。
尽管我的宽带互联网连接非常好,但我下载大文件时经常会失败并出现Connection Lost
错误消息。我不确定,但我认为失败是因为我的互联网连接可能每隔几个小时就会中断一两秒钟。由于文件很大,下载可能需要 4.5 到 5 个小时,而互联网连接可能在这段漫长的时间里中断一两秒钟。我之所以这么想,是因为我曾在同一台计算机上使用相同的互联网连接和相同的 SSH 软件成功下载过这种大小的文件。换句话说,有时我很幸运,在互联网连接中断一秒钟之前下载就完成了。
有没有什么方法可以让我以智能的方式下载文件——即操作系统或软件“知道”文件上次停止的位置,并且如果互联网连接中断,可以从上一次停止的位置继续?
也许可以分段下载文件?虽然我不知道是否可以方便地将文件拆分为多个文件——但我认为这会非常困难,因为该文件是二进制文件并且无法被人类读取。
就像现在一样,如果整个~35 GB 的文件下载在连接中断之前没有完成,那么我必须重新开始下载并覆盖迄今为止在本地下载的~5-20 GB 的块。
你有什么建议吗?谢谢。
答案1
我的“正确”解决方案是找到并修复导致问题的原因,但这些方法可能会起到解决方法:
- 使用 split (man split--将文件拆分成多个部分)。它似乎安装在大多数 unix 系统上。
- 通过 dd 拆分文件(dd if=inputfilename of=file_part0 skip=0 bs=500MB)。(使用 skip=1 和不同的文件名重复。)
- 使用可以恢复下载的程序。FTP 可以工作(但太恶心了。纯文本密码、单独的控制和数据连接与大多数防火墙不兼容)
- 作弊并将文件移动到网络目录。大多数浏览器支持恢复下载,
答案2
我rsync --partial
在 Windows 上的 Cygwin 上使用过。效果很好。
答案3
这bittorrent 协议可以很好地处理这个任务,尽管它可能不是最容易设置的。
答案4
你可以分裂将文件拆分成更小的块,然后在另一端重新组装它们。或者,如果您正在运行 FTP 或 HTTP 守护程序,则应该能够通过守护程序运行下载,这两者通常都支持下载恢复。