两台Linux系统之间传输⽂件的⼏种⽅法
scp传输
当两台LINUX主机之间要互传⽂件时可使⽤SCP命令来实现
scp传输速度较慢,但使⽤ssh通道保证了传输的安全性
复制⽂件
将本地⽂件拷贝到远程
scp ⽂件名 –⽤户名@计算机IP或者计算机名称:远程路径
从远程将⽂件拷回本地
scp –⽤户名@计算机IP或者计算机名称:⽂件名本地路径
命令格式
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
1
2
3
4
5
6
7
第1,2个指定了⽤户名,命令执⾏后需要再输⼊密码,第1个仅指定了远程的⽬录,⽂件名字不变,第2个指定了⽂件名;
第3,4个没有指定⽤户名,命令执⾏后需要输⼊⽤户名和密码,第3个仅指定了远程的⽬录,⽂件名字不变,第4个指定了⽂件名;复制⽬录
将本地⽬录拷贝到远程
scp -r ⽬录名⽤户名@计算机IP或者计算机名称:远程路径
从远程将⽬录拷回本地什么电脑可以装linux系统
scp -r ⽤户名@计算机IP或者计算机名称:⽬录名本地路径
命令格式
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
1
2
3
第1个指定了⽤户名,命令执⾏后需要再输⼊密码;
第2个没有指定⽤户名,命令执⾏后需要输⼊⽤户名和密码;
例⼦
scp -r /home/space/music/ root@www.cumt.edu:/home/root/others/
scp -r /home/space/music/ www.cumt.edu:/home/root/others/
1
2
参数详解
参数描述
-a尽可能将档案状态、权限等资料都照原状予以复制
-r若 source 中含有⽬录名,则将⽬录下之档案亦皆依序拷贝⾄⽬的地
-f若⽬的地已经有相同档名的档案存在,则在复制前先予以删除再⾏复制
-v和⼤多数 linux 命令中的 -v 意思⼀样 , ⽤来显⽰进度 . 可以⽤来查看连接 , 认证 , 或是配置错误
-C使能压缩选项
-P选择端⼝ . 注意 -p 已经被 rcp 使⽤
-4强⾏使⽤ IPV4 地址
-6强⾏使⽤ IPV6 地址
举例说明
1. 把计算机名为“”下所有的东西都拷贝到本机/home/admin/⽬录下
scp -r * :/home/admin/
1
1. 以admin的⾝份把IP地址为“19
2.168.219.125”,/home/admin/test⽬录下所有的东西都拷贝到本机/home/admin/⽬录下
scp -r  admin@192.168.219.125:/home/admin/test  /home/admin/
1
参考
rsync差异化传输(⽀持断点续传,数据同步)
rsync -av /backup/ -e ssh root@192.168.1.110:/bak
1
-a: archive归档模式,表⽰以递归⽅式传输⽂件,并保持所有⽂件属性,链接等,等于-rlptgoDrsync——remote sync。
rsync是Linux系统下的⽂件同步和数据传输⼯具,它采⽤“rsync”算法,可以将⼀个客户机和远程⽂件服务器之间的⽂件同步,也可以在本地系统中将数据从⼀个分区备份到另⼀个分区上。
如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不⼀致的部分。rsync可以执⾏完整备份或增量备份。
它的主要特点有:
1. 可以镜像保存整个⽬录树和⽂件系统;
2. 可以很容易做到保持原来⽂件的权限、时间、软硬链接;⽆须特殊权限即可安装;
3. 可以增量同步数据,⽂件传输效率⾼,因⽽同步时间短;
4. 可以使⽤rcp、ssh等⽅式来传输⽂件,当然也可以通过直接的socket连接;
5. ⽀持匿名传输,以⽅便进⾏⽹站镜象等;
6. 加密传输数据,保证了数据的安全性;
管道传输(降低IO开销)
gzip -c sda.img | ssh root@192.168.1.110 "gunzip -c - > /image/sda.img"
1
对sda.img使⽤gzip压缩,-c参数表⽰输出到stdout,即通过管道传送
gunzip -c - 中的”-“表⽰接收从管道传进的sdtin
nc传输(⼀种⽹络的数据流重定向)
nc所做的就是在两台电脑之间建⽴tcp或udp链接,并在两个端⼝之间传输数据流,是⼀种⽹络的数据流重定向
使⽤dd结合nc命令⽹络克隆磁盘分区
主机:
dd if=/dev/vda | gzip -c | nc -l 50522
1
待恢复机:
nc 192.168.215.63 50522 | gzip -dc | dd of=/dev/sda
1
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字节数据(引导程序和分区表)
通常,可以⽤scp完成两台主机间的⽂件传输任务,但在主机间未建⽴信任关系的情况下,scp每次都需要输⼊密码,⽤起来感觉不是很⽅便,之前这篇笔记介绍过不⽤输⼊密码执⾏脚本或传输⽂件的⽅法,但对于⼀些临时性的任务,准备⼯作还是⽐较⿇烦。
what is nc ?
nc是netcat的简写,关于nc是什么,man如是说:arbitrary TCP and UDP connections and listens
nc可以⽅便地实现任意TCP/UDP端⼝的侦听,连接的建⽴,端⼝的扫描,等等。也即,nc既可以作为server以TCP或UDP⽅式侦听指定端⼝,也可以作为client发起TCP连接或⽅式UDP包。下⾯要介绍的技巧就是借助其TCP连接来实现主机间⽂件传输的。
nc的控制参数不少,常⽤的⼏个参数如下所列:
备注:nc要连接的⽬的端⼝可以是具体的整数,也可以直接通过服务名指定,这种情况下,nc会负责将name映射⾄某个well-
known port(可⽤cat /etc/services查看这些端⼝跟服务名的映射关系)
参数描述
-l⽤于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,⽽⾮向其它地址发起连接-p port指定nc要使⽤的端⼝。若之前已指定-l,则这⾥的-p指定具体的侦听端⼝;若未指定-l,则表⽰向这个端⼝发起连接-s hostname/ip-address指定发送数据的源IP地址,适⽤于多⽹卡机器
-u指定nc使⽤UDP协议,默认为TCP
-v输出交互或出错信息,新⼿调试时尤为有⽤
use nc to transmit data between hosts
经过上⾯对nc的简介,估计不少同学已经知道怎么⽤nc来实现两台机器间的⽂件传输了。这⾥对实现流程做简单说明。
在数据接收⽅的机器上侦听指定端⼝
nc -l -p 8210 >         # 在本机8210端⼝侦听TCP连接,将收到的数据写⼊⽂本⽂件
nc -l -p 8210 > demo.tar.bz2    # 在本机8210端⼝侦听TCP连接,将收到的数据写成压缩⽂件
1
2
在数据发送⽅机器上向指定地址(ip+port)以TCP⽅式发送数据
nc dest_ip 8210 <       # 向ip为dest_ip的机器的8210端⼝发送⽂件
nc dest_ip 8210 < $(tar -jcvf demo.tar.) # 压缩后发送
1
2
-v打印出错信息
接收⽅:nc -v -l -p 8210
发送⽅:nc -v dest_ip 8210
1
2
注意:使⽤nc传⽂件时,需注意操作次序,receiver先侦听端⼝,sender向receiver所在机器的该端⼝发送数据。否则发送失败。
建⽴⽂件服务器
除了上⾯集中传输⽂件的⽅式之外,还可以通过简历⽂件服务器,然后通过⽹络挂载的⽅式传输,这种适⽤于经常性的拷贝,下⾯是⼀个挂载ftp服务器的例⼦
挂载ftp服务器
yum install curlftpfs
mkdir /data/ftp
curlftpfs username:urdomain /data/ftp

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。