分割文件上传/分割文件下载

[Switch to English]

在互联网上传输大文件,一直是具有挑战性的工作,特别是要将几个G以至于上百G的文件上传到云端服务器,或从服务器下载下来,能否成功是要靠点运气的,造成此困难的原因大致有以下几点:

  • 互联网网速飘忽不定,传输过程不稳定以至于被中断
  • 常用的传输协议,如http、ftp等在传输中断时恢复的能力不强
  • 大文件传输时间跨度长,要保障在整个传输周期内不发生问题的几率较低

OnTheSSH支持文件分割传输,是解决大文件传输问题的解决方案。下图展示了工作原理:

在传输之前,先在源端将大文件分割成许多块文件,然后传输这些块文件,最后在目的端将这些块文件进行合并。OnTheSSH在传输过程中进行以下流程的管理和控制:

  • 获得源文件的大小、设置块文件的大小,将源文件进行分割。
  • 通过ssh/scp协议并发传输块文件,在传输过程中监控每个块文件的传输状态,任何块文件传输失败或传输超时,都会触发此块文件的重新传输,直至此块文件被完整传输到目的端。
  • 全部的块文件传输完成时,进行块文件合并。

使用分割传输

在左侧栏点击要传输的远端主机(这里是Ubuntu),点击右边的“主机窗口”按钮,界面显示如下:

在Host window标签页中,点击顶部的分割上传按钮,可将本地文件分割传输到当前目录;右键点击列表中一个文件,在弹出菜单中点击分割下载菜单,可将此文件分割传输到本地。

点击顶部的分割上传按钮,将弹出窗口进行分割文件的配置(分割下载的配置和此相似,不再详述):

在源和目的栏目中,选择要上传的本地文件和远端接收此文件的目录。在分割大小栏目中定义分割块的单位和数量,他们决定了分割块文件的大小(这里定义10M)。在分割目录栏目中,设置本地分割块的存储目录和远端分割块的接收目录。

下面是传输过程的界面截图:

从上图可看到,传输的文件是CentOS安装光盘ISO,大约4.7G大小,上传到/home/dyf目录。分割块文件大小是10M,总共分割了450个块文件,当前已经传输了42个块文件。分割传输工作流程有7个步骤:

  1. 获得传输源文件大小
  2. 在本地创建存放分割块文件的目录
  3. 在远端创建接收块文件的目录
  4. 在本地分割文件(下载时在远端分割文件)
  5. 传输所有块文件。传输是多线程并发进行的,最多同时传输5个块文件,如果有块文件传输失败或超时,会重新传输此块文件。
  6. 传输完成后,在目的端合并文件
  7. 完成,自动删除传输过程中本地和远端的所有块文件

注意点

传输正常完成或被手动停止时,本地和远端临时存放分割块文件的目录,会自动被删除。但异常情况时,比如突然停电或网络中断了,远端分割块文件就来不及删除,将会占用磁盘空间,因此需要定期的检查磁盘空间占用情况,以避免磁盘爆满。

本地和远端存放分割块的磁盘空间,要有适合的磁盘剩余容量。默认的本地和远端存放分割块文件的位置,在菜单“文件”–“偏好”中设置: