[机器迁移]如何通过网络快速传输海量(小)文件
2015-07-20 11:09
525 查看
最近公司组织了开发机迁移的活动,需要将个人用的开发机,从一个平台迁移到另外一个上面去。
由于开发机使用了一阵子,导致了机器的磁盘上积攒了大量的文件,其中,小文件占了大多数,一般都是程序,临时文件,日志文件,还有一些 virtualenv 里面的文件和库。
我们一般能够使用的,在两台服务器之间传送文件的服务,不外乎如下几类:
HTTP Server + Wget
FTP Server + Wget
scp
rsync
所有这些选项,在传输速度上都是可以满足需求的,毕竟是公司内网; 可是它们在处理众多小文件的时候又遇到了瓶颈,光是扫描磁盘上的文件列表,都会花去很长的时间。所以解决这个问题,我们分成两步:
处理海量小文件
快速传输
对于问题 1, 我们使用 tar 来合并(但不压缩) 文件,可以做到在传输文件的时候屏蔽文件数量多带来的困扰; 问题 2 ,在网络环境比较好,同时不需要加密传输的情况下,可以使用 nc 命令来完成。
nc - arbitrary TCP and UDP connections and listens
nc 是一个专门用来完成 点对点的 TCP/UDP 传输的工具,它可以通过 -l 参数来完成监听一个端口,将发送到端口上的数据读入; 同时可以指定 一个 IP+端口,将数据发送到指定的地址去。
结合我们提到的需求,我们需要将 home 目录,从机器 A 传输到机器 B 上面去,可以才去如下步骤:
cd ~
nc -l -p X | tar xv
cd ~
tar cv . | nc IP-B X
经过我们的测试,使用 nc 传输文件,速率大概是使用 scp 的大概 4 倍左右; 当然,具体的表现会根据你机器、网络配置的不同有所波动。
由于开发机使用了一阵子,导致了机器的磁盘上积攒了大量的文件,其中,小文件占了大多数,一般都是程序,临时文件,日志文件,还有一些 virtualenv 里面的文件和库。
我们一般能够使用的,在两台服务器之间传送文件的服务,不外乎如下几类:
HTTP Server + Wget
FTP Server + Wget
scp
rsync
所有这些选项,在传输速度上都是可以满足需求的,毕竟是公司内网; 可是它们在处理众多小文件的时候又遇到了瓶颈,光是扫描磁盘上的文件列表,都会花去很长的时间。所以解决这个问题,我们分成两步:
处理海量小文件
快速传输
对于问题 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 倍左右; 当然,具体的表现会根据你机器、网络配置的不同有所波动。
相关文章推荐
- Android 开源框架Universal-Image-Loader加载https图片
- 《ASP.NET 本质论》HttpApplication的处理管道 ,HttpMoudle,HttpHandler
- 黑马程序员 第四篇 Java 网络编程 (Foundation; completed)
- Java线程池—转载梅子 http://www.cnblogs.com/dolphin0520/p/3932921.html
- 网络流(最大流和最小费用流)
- HttpClient使用Post和Get提交参数
- twemproxy源码分析之四:处理流程ji(内容属于转载。这是我看到的一篇十分详尽的分析http://idning.git
- Linux命令学习之路---网络状态(netstat)命令
- 【网络流】 HDU 3998 Sequence 最多不重合路径
- 【网络流】HDU 3599 War 最多不相交路径
- 多线程的QTcpServer
- Xcode7中关于下载网络图片报错的问题
- TCP/IP详解学习笔记(1)--基本概述
- TCP/IP 网络编程(六)
- C#中发送HttpPost请求来调用WebService
- 解决VM虚拟机连不上网络的问题
- 微软“小冰”识狗与人工神经网络(V)
- 1、linux网络服务实验 用PuTTY连接Linux
- [原]理解HTTP之Content-Type
- Apache Web Server -> httpd 的长连接配置