码迷,mamicode.com
首页 > 其他好文 > 详细

[机器迁移]如何通过网络快速传输海量(小)文件

时间:2015-07-20 12:50:08      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

最近公司组织了开发机迁移的活动,需要将个人用的开发机,从一个平台迁移到另外一个上面去。

由于开发机使用了一阵子,导致了机器的磁盘上积攒了大量的文件,其中,小文件占了大多数,一般都是程序,临时文件,日志文件,还有一些 virtualenv 里面的文件和库。

 

我们一般能够使用的,在两台服务器之间传送文件的服务,不外乎如下几类:

 

  • HTTP Server + Wget
  • FTP Server + Wget
  • scp
  • rsync

所有这些选项,在传输速度上都是可以满足需求的,毕竟是公司内网; 可是它们在处理众多小文件的时候又遇到了瓶颈,光是扫描磁盘上的文件列表,都会花去很长的时间。所以解决这个问题,我们分成两步:

 

  1. 处理海量小文件
  2. 快速传输

对于问题 1, 我们使用 tar 来合并(但不压缩) 文件,可以做到在传输文件的时候屏蔽文件数量多带来的困扰; 问题 2 ,在网络环境比较好,同时不需要加密传输的情况下,可以使用  nc 命令来完成。

 

NC (Net Cat)

nc - arbitrary TCP and UDP connections and listens

 

nc 是一个专门用来完成 点对点的 TCP/UDP 传输的工具,它可以通过 -l 参数来完成监听一个端口,将发送到端口上的数据读入; 同时可以指定 一个 IP+端口,将数据发送到指定的地址去。

 

结合我们提到的需求,我们需要将 home 目录,从机器 A 传输到机器 B 上面去,可以才去如下步骤:

 

机器 B : 监听本机端口 X,并且将数据解包之后写入磁盘

cd ~

nc -l -p X | tar xv

机器 A :打包磁盘上的工具,然后发送到机器 B 的端口 X 上

cd ~

tar cv . | nc IP-B X

经过我们的测试,使用 nc 传输文件,速率大概是使用 scp 的大概 4 倍左右; 当然,具体的表现会根据你机器、网络配置的不同有所波动。

[机器迁移]如何通过网络快速传输海量(小)文件

标签:

原文地址:http://www.cnblogs.com/llhf/p/4660882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!