服务器写入大量小文件,nc结合bash并发拷贝大量的小文件
Posted 马雁飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器写入大量小文件,nc结合bash并发拷贝大量的小文件相关的知识,希望对你有一定的参考价值。
生产环境的一台服务器硬盘有问题,需要更换服务器,其中有16480个小文件,总共11G左右的数据需要迁移,数据中断限制在5分钟内,拷贝数据必须限制到2分钟之内完成
尝试过用nfs、scp的方法时间消耗都比较长,最后决定用nc,2分钟之内搞定,简单记录下过程
1、新服务器1000M以太网
# ethtool em1Settings for em1:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: off
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
2、服务端需要开16个shell等待客户端传输数据,经测试,nc服务端进程不能放在后台,必须放在前台
nc -l 990 |tar -C /home/serverrrd/ -zxf -
nc -l 991 |tar -C /home/serverrrd/ -zxf -
nc -l 992 |tar -C /home/serverrrd/ -zxf -
nc -l 993 |tar -C /home/serverrrd/ -zxf -
nc -l 994 |tar -C /home/serverrrd/ -zxf -
nc -l 995 |tar -C /home/serverrrd/ -zxf -
nc -l 996 |tar -C /home/serverrrd/ -zxf -
nc -l 997 |tar -C /home/serverrrd/ -zxf -
nc -l 998|tar -C /home/serverrrd/ -zxf -
nc -l 999 |tar -C /home/serverrrd/ -zxf -
nc -l 9910 |tar -C /home/serverrrd/ -zxf -
nc -l 9911 |tar -C /home/serverrrd/ -zxf -
nc -l 9912 |tar -C /home/serverrrd/ -zxf -
nc -l 9913 |tar -C /home/serverrrd/ -zxf -
nc -l 9914 |tar -C /home/serverrrd/ -zxf -
nc -l 9915 |tar -C /home/serverrrd/ -zxf -netstat -ntlup| grep nc
3、客户端开16个并发同时向服务端提交传输数据
cat batch-client.sh#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 0 a b c d e f
do
expr $i "+" 10 &> /dev/null
if [ $? -eq 0 ]; then
port=$i
else
port=1`echo $i| tr "a-z" "0-5"`
fi
#echo $port
#echo $i*.rrd
tar -zcf - $i*.rrd |nc 172.30.4.219 99$port
&
done
wait
echo "done"
以上是关于服务器写入大量小文件,nc结合bash并发拷贝大量的小文件的主要内容,如果未能解决你的问题,请参考以下文章