标签:
最近公司组织了开发机迁移的活动,需要将个人用的开发机,从一个平台迁移到另外一个上面去。
由于开发机使用了一阵子,导致了机器的磁盘上积攒了大量的文件,其中,小文件占了大多数,一般都是程序,临时文件,日志文件,还有一些 virtualenv 里面的文件和库。
我们一般能够使用的,在两台服务器之间传送文件的服务,不外乎如下几类:
所有这些选项,在传输速度上都是可以满足需求的,毕竟是公司内网; 可是它们在处理众多小文件的时候又遇到了瓶颈,光是扫描磁盘上的文件列表,都会花去很长的时间。所以解决这个问题,我们分成两步:
对于问题 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 倍左右; 当然,具体的表现会根据你机器、网络配置的不同有所波动。
标签:
原文地址:http://www.cnblogs.com/llhf/p/4660882.html