您当前的位置:首页 > 计算机 > 软件应用 > 网络应用

服务器间传输大量小文件

时间:08-05来源:作者:点击数:
CDSY,CDSY.XYZ

服务器间传输大量小文件

 公司最近新到了一批服务器,做好了虚拟化,领导一声令下,要把老服务器(老服务存储是有点问题了的)的所有研发环境都迁移到新的服务器上(头大)。只能硬着头皮迁了。实话说,公司研发几年的数据要迁过去是真的麻烦,就一个svn 十几T 的数据,哪怕是局域网传起来也是相当头大。
 吐槽归吐槽,活还是要干。

大部分服务器之间传输文件差不多相同的命令 ,无非是调优的问题。
方法 一:tar + ssh + pv(高效批量传输)

适用于:大量小文件,适当压缩以减少数据量

tar czf - /source/ | pv | ssh user@destination_ip "tar xzf - -C /destination/"


source:源文件目录
destination:目标目录
destination_ip :目标ip
tar czf - /source/:在本地打包,不写入磁盘,直接输出到标准输出
pv:显示传输进度(可选)
ssh user@destination "tar xzf - -C /destination/":在远程服务器解压

优势:

减少 I/O:打包后整体传输,避免单个文件频繁打开/关闭导致的性能损失。

压缩优化:可选 gzip(tar czf),提高传输速度

方法二:tar + Netcat(局域网超高速传输)

适用于:带宽充足,速度优先

两台服务器要先安装netcat

yum install nc
yum install pv  # 显示进度源服务器安装即可

在目标服务器上运行监听端口:

nc -l 9999 | tar xzf - -C /destination/

9999:设置监听的端口,可以自定义
destination:目标目录

在源服务器上运行传输命令:

tar czf - /source/ | pv | nc destination_ip 9999

source: 源文件目录
destination_ip :目标ip
pv :显示进度

优势:

比 SSH 快,因为 SSH 需要加密,而 nc 直接传输数据。

超高速,适用于局域网。

这个里我主要是用的这两个方法,主要是快。当然还有其他的传送方法,像rsync,scp 等,看个人追求了需要断点传续的话就用rsync了。

下面是一些传输组合,有兴趣可以试试。

方案 使用场景 速度
tar + ssh 常规传输 ***
rsync 断点续传/增量传输 **
tar + Netcat 局域网超高速 ****
tar + pigz + ssh CPU 多核优化 ***
BBR + SCP 高延迟/丢包网络 **

局域网:tar + Netcat

远程服务器:tar + ssh 或 rsync

支持断点续传:rsync

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐