Linux主机之间传输文件的几种方法对比
1.scp传输
scp -r /data/file root@ip:/data/ scp -C /data/sda.img root@ip:/data/img/
#-r: 支持目录
#-C: 启用压缩传送
scp传输速度较慢,但使用ssh通道保证了传输的安全性
2.rsync差异化传输(支持断点续传,数据同步)
rsync -av /backup/ -e ssh root@192.168.1.110:/bak #-a: archive归档模式,表示以递归方式传输文件,并保持所有文件属性,链接等,等于-rlptgoD rsync——remote sync。rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上。如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分。rsync可以执行完整备份或增量备份。它的主要特点有: 1.可以镜像保存整个目录树和文件系统; 2.可以很容易做到保持原来文件的权限、时间、软硬链接;无须特殊权限即可安装; 3.可以增量同步数据,文件传输效率高,因而同步时间短; 4.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接; 5.支持匿名传输,以方便进行网站镜象等; 6.加密传输数据,保证了数据的安全性;
3.管道传输(降低IO开销)
gzip -c sda.img | ssh root@192.168.1.110 "gunzip -c - > /image/sda.img"
#对sda.img使用gzip压缩,-c参数表示输出到stdout,即通过管道传送
#gunzip -c - 中的"-"表示接收从管道传进的sdtin
4.nc传输(一种网络的数据流重定向)
nc所做的就是在两台电脑之间建立tcp或udp链接,并在两个端口之间传输数据流,是一种网络的数据流重定向
#使用dd结合nc命令网络克隆磁盘分区 主机: dd if=/dev/vda | gzip -c | nc -l 50522 待恢复机: nc 192.168.215.63 50522 | gzip -dc | dd of=/dev/sda
#dd命令克隆/dev/vda磁盘,并使用gzip压缩,把数据流重定向到本机50522端口,待恢复机上使用nc连接主机50522端口,就能接收主机50522端口的比特数据流,然后使用gzip解压缩,并恢复到/dev/sda磁盘
#dd命令读取的是磁盘扇区,所以不论磁盘文件系统,或者分区表,磁盘MBR信息,dd都能够复制,可以使用bs,count参数控制要克隆的大小
#例如dd bs=512 count=1 if=/dev/vda of=mbr.img 只复制磁盘vda的第一个扇区512K字节数据(引导程序和分区表)
5.建立文件服务器
除了上面集中传输文件的方式之外,还可以通过简历文件服务器,然后通过网络挂载的方式传输,这种适用于经常性的拷贝,下面是一个挂载ftp服务器的例子
挂载ftp服务器 yum install curlftpfs mkdir /data/ftp curlftpfs username:password@ftp.yourdomain.com /data/ftp