很多时候,我们需要将一些大的文件进行跨网传输,一个文件动不动几十G,当你的带宽资源紧张的时候,传输这样几个文件会花10小时,甚至几天。
nc传输文件,通过以下方法,将加快文件传输,希望对大家有所帮助。
环境:
server1 源地址(
server2 目标地址
需求:将server1上的某个目录文件拷贝到server2上
方式1(把目录压缩后传递)
1.安装nc,多数linux发行版都默认安装了
sudo yum install nc
2.server2上操作
进入自己的目录,确保有足够的空间,然后启动监听
cd ~
nc -l 23456 | tar xvzf –
3.server1上操作
sudo tar cvzf - /home/q/www/cellSystem/ | nc l-server2.h.com 23456
完成!
方式2(直接传输文件)
准备工作:
如果没有nc或者pv命令,执行以下命令安装
sudo yum -y install nc
sudo yum -y install pv
1. server1上操作
#<file>为要传递的文件
sudo lsof -i :12345 || sudo cat <file> | nc -l 12345
2. server2上操作
#<file>为要保存的文件名!!注意:文件必须要在自己有写权限的目录,例如/tmp目录下,否则保存会失败!!;而l-server1.beta.cn为server1的地址;
nc l-server1.beta.cn 12345 | pv -pt > <file>
方式3(Python搭建服务器)
1. server1上操作,首先cd到<file>所在的目录
python -m SimpleHTTPServer 41190
2. server2上操作
sudo wget http://l-server1.beta.com:41190/<file>
方式4(rysnc方式)
启动rsync服务方法
rsync默认已经被安装在机器上,不再另行介绍安装方法。
编辑rsync的配置文件:/etc/rsyncd.conf,举例如下:
list = false
uid = root
gid = root
ignore errors
read only = yes
#auth users = aaa
#secrets file = /etc/rsync.passwd
hosts allow = *.aa.com
[tmpBackup]
path = /tmp/backup
read only = yes
ignore errors
hosts allow = *.aa.com
以上配置文件,将/tmp/backup目录作为远程同步目录暴露出去(访问名:tmpBackup),可以在其他机器(包括跨机房)远程进行文件同步。
如果rsync已经启动,则查找进程后kill掉。然后使用如下命令启动:
sudo rsync --daemon /etc/rsyncd.conf
远程同步文件
在需要拷贝文件的机器上执行以下命令:
sudo rsync -vrtpc --progress root@<远程机器名>::<配置项名称> <本地目录>
#例如:
#sudo rsync -vrtpc --progress root@l-aa.h.beta.com::tmpBackup /tmp
批量执行
使用该方式,而不是使用python的SimpleHTTPServer方式,主要是两点原因:
- 该方式支持文件夹的同步
- 该方式也可以支持多机批量同步
atnodes -L 'sudo rsync -vrtpc --progress root@l-aa.h.beta.com::tmpBackup /tmp' l-aa[1-9].h.beta.com