需求是这样的:将一个大概680M的Matlab数据文件传到国外某所大学的服务器上,服务器需要连接VPN才能访问,由于数据文件太大,而且如果我直接
ssh
连过去或者用ftp
传输,那么中间很可能中断。
ps:原来的时间大概17个小时左右!天哪,不要太惊讶,这是真的!
我当然没有直接的解决方法啊…请教王博学长,经过王博学长的指点迷津,一个基本可行的方案就这么出来了:
文件 -> CDN ->国外服务器
用cdn 的话,我只需要将文件先上传到CDN,然后只要节点同步之后,文件很有可能在国外的服务器上,这时候国外的大学访问国外的服务器速度当然是可观的了,好,这就开始干。
中国CDN技术哪家强。只要有“云”的好像都提供。我直接用了王博学长的七牛云,然后开心的准备上传文件,可是,谁知:
这就比较尴尬了,那我能不能将文件分割开来上传呢?
一 : split
对,没错,Linux下的split命令就能解决这个问题:
split 详细用法 : http://snailwarrior.blog.51cto.com/680306/140531
我将文件分成了50M为一份,然后扔到了七牛云上。
二:cdn
内容分发网络,我主要说说我目前觉得它技术上的难点:
1:如何同步节点的数据,也就是数据的一致性。
2:如何判断数据的改变和更新的策略。
三:shell 脚本
在下载文件的时候,我需要将分割的文件一个个下载下来,好麻烦,但是split分割之后的文件是有后缀规律的,最后简单的shell脚本解决了这个问题:
#!/bin/bash
for num in a b c d e f g h i j k l m n
do
wget http://xxx.xxx.cn/dat_a$num
done
四:tmux
虽然现在下载任务有脚本执行了,但是我还是无法保证网络的稳定(即putty
不会退出),如果putty被退出,那下载任务也退出了,因为它是putty
这个进程fork
出来的子进程在执行,其实tumx
或者screen
完美的解决了这个问题,我这里只说tmux
,网上资料已经非常多了,我把自己找的好的两篇分享出来。
呼~学到不少东西,尤其是tmux,现在觉得这个好爽。快来试试吧。