两台Linux系统之间传输文件的几种方法

scp传输



当两台LINUX主机之间要互传文件时可使用SCP命令来实现

scp传输速度较慢,但使用ssh通道保证了传输的安全性

复制文件


  • 将本地文件拷贝到远程

scp 文件名 –用户名@计算机IP或者计算机名称:远程路径

  • 从远程将文件拷回本地

scp –用户名@计算机IP或者计算机名称:文件名 本地路径

命令格式

scp local_file [email protected]_ip:remote_folder
或者
scp local_file [email protected]_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file 

第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名; 
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

复制目录


  • 将本地目录拷贝到远程

scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径

  • 从远程将目录拷回本地

scp -r 用户名@计算机IP或者计算机名称:目录名 本地路径

命令格式

scp -r local_folder [email protected]_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder 

第1个指定了用户名,命令执行后需要再输入密码; 
第2个没有指定用户名,命令执行后需要输入用户名和密码;

例子

scp -r /home/space/music/ [email protected]:/home/root/others/
scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 

参数详解


参数 描述
-a 尽可能将档案状态、权限等资料都照原状予以复制
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误
-C 使能压缩选项
-P 选择端口 . 注意 -p 已经被 rcp 使用
-4 强行使用 IPV4 地址
-6 强行使用 IPV6 地址

举例说明


  1. 把计算机名为“v111.nn”下所有的东西都拷贝到本机/home/admin/目录下
     scp -r * v111.nn:/home/admin/ 
  1. 以admin的身份把IP地址为“192.168.219.125”,/home/admin/test目录下所有的东西都拷贝到本机/home/admin/目录下
     scp -r  admin@192.168.219.125:/home/admin/test  /home/admin/

参考


配置scp在Linux或Unix之间传输文件无需密码

Linux之cp/scp命令+scp命令详解

[CentOS 不能使用scp命令 解决方法](http://www.linuxidc.com/Linux/2014-09/106569.htm_

两台Linux主机之间scp复制文件

rsync差异化传输(支持断点续传,数据同步)


rsync -av /backup/ -e ssh [email protected]192.168.1.110:/bak

-a: archive归档模式,表示以递归方式传输文件,并保持所有文件属性,链接等,等于-rlptgoDrsync——remote sync。

rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上。

如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分。rsync可以执行完整备份或增量备份。

它的主要特点有:

  1. 可以镜像保存整个目录树和文件系统;
  2. 可以很容易做到保持原来文件的权限、时间、软硬链接;无须特殊权限即可安装;
  3. 可以增量同步数据,文件传输效率高,因而同步时间短;
  4. 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
  5. 支持匿名传输,以方便进行网站镜象等;
  6. 加密传输数据,保证了数据的安全性;

Rsync实现文件备份同步详解

Rsync同步两台服务器

CentOS 6.5下Rsync远程同步

Linux下用Rsync进行数据备份和同步配制

Linux使用Rsync客户端与服务端同步目录进行备份

管道传输(降低IO开销)


gzip -c sda.img | ssh [email protected]192.168.1.110 "gunzip -c - > /image/sda.img"

对sda.img使用gzip压缩,-c参数表示输出到stdout,即通过管道传送

gunzip -c - 中的”-“表示接收从管道传进的sdtin

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字节数据(引导程序和分区表)

通常,可以用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 > demo.txt        # 在本机8210端口侦听TCP连接,将收到的数据写入文本文件
nc -l -p 8210 > demo.tar.bz2    # 在本机8210端口侦听TCP连接,将收到的数据写成压缩文件

在数据发送方机器上向指定地址(ip+port)以TCP方式发送数据


nc dest_ip 8210 < demo.txt      # 向ip为dest_ip的机器的8210端口发送demo.txt文件
nc dest_ip 8210 < $(tar -jcvf demo.tar.bz2 demo.txt) # 压缩后发送

-v打印出错信息


接收方:nc -v -l -p 8210
发送方:nc -v dest_ip 8210

注意:使用nc传文件时,需注意操作次序,receiver先侦听端口,sender向receiver所在机器的该端口发送数据。否则发送失败。

建立文件服务器



除了上面集中传输文件的方式之外,还可以通过简历文件服务器,然后通过网络挂载的方式传输,这种适用于经常性的拷贝,下面是一个挂载ftp服务器的例子 
挂载ftp服务器

yum install curlftpfs
mkdir /data/ftp
curlftpfs username:[email protected] /data/ftp

原文地址:https://www.cnblogs.com/bignode/p/9241357.html

时间: 2024-10-05 05:00:17

两台Linux系统之间传输文件的几种方法的相关文章

使用WinSCP在Windows和Linux系统之间传输文件

小梅哥编写,未经许可,严禁用于任何商业用途 2018年6月30日 在日常SoC开发中,我们经常需要在Windows和Linux系统之间传输文件,例如在Windows系统上的DS-5集成开发环境中编写好的Linux应用程序需要传递到Linux嵌入式开发板中(例如SoC FPGA开发板),或者需要将Linux系统中的文件拷贝到Windows上进一步操作处理,就涉及到两者之间的文件传输.实现上述场景中文件传输的一种比较便捷的方式,是使用SCP方式.在Windows系统中,可以通过安装WinSCP软件来

两台Linux机之间传送文件

最近实验室里接管了一台服务器,经常需要用到服务器与自己主机之间进行文件传输,因此,在此介绍一下两台Linux主机之间的一些操作,方便后来者. 1. Linux.Windows主机远程访问Linux服务器: 在服务器上安装vnc server,在客户端机安装vnc viewer,然后参照一些教程做就可以了. 2. 两台Linux主机进行文件上传与文件下载. 为了方便描述,我们称服务器为Linux1,我的主机为Linux2. 2.1 下面我们介绍如何从Linux1 拷贝文件回来到本地PC Linux

在两台linux服务器上传输文件scp

将107服务器上的ins.war传到38服务器指定目录: scp /gxxj/apache-tomcat-7.0.78-ins/ins.war [email protected]:/data/ 将107服务器上的ins.war传到45服务器指定目录: scp /gxxj/apache-tomcat-7.0.78-ins/ins.war [email protected]:/var/tomcat-7/ 将38上的Tomcat文件夹移到45机器上: scp -r /data/apache-tomca

两台Linux系统之间使用SSH链接

系统环境:centos 6.5 在未开启telnet下,SSH从一台Linux链接到另一台Linux: ssh -l root -p 22 192.168.1.162

两台Linux服务器之间的文件传输

最近工作中有这样一个需求,需要将A服务器上的文件传到B服务器. 本来想用Java开发,但一想Java开发周期长,应对这样一个小需求没必要用Java,最后选择了Shell脚本,相关代码如下: 1 #!/bin/bash 2 3 function error_exit { 4 echo "$1" 1>&2 5 exit 1 6 } 7 8 # 本地目录(可修改项) 9 sourcePath=/opt/file 11 # 远程服务器IP,端口,目录(可修改项) 12 targe

两台Linux主机之间文件的复制

使用scp命令可以实现两台Linux主机之间的文件复制,基本格式是: scp [可选参数] file_source file_target 1. 复制文件 命令格式: scp local_file [email protected]_ip:remote_folderscp local_file [email protected]_ip:remote_filescp local_file remote_ip:remote_folderscp local_file remote_ip:remote_

Linux系统之间拷贝文件的技巧总结

日常工作中需要经常从远程或本地服务器拷贝/移动大量文件.遇到文件比较多比较散的时候速度较慢,所以在想有没有较快的方式.经过搜罗.整理.验证,大概有以下几种. 首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用tar工具对将要拷贝/移动的内容进行打包/压缩,之后再进行拷贝/移动,最后再解包/解压缩. 另外,也是很关键的一个技巧,即,不必在tar打包/压缩完毕之后再进行拷贝,解包/解压缩,可以通过管道一边打包/压缩另一边执行拷贝解包/解压缩. 比如

ubuntu/linux mint 创建proc文件的三种方法(二)

在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试. 大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法. 方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险): 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁): 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整): 示例四:在proc文件中使用内核链表的一个示例(用的方

ubuntu/linux mint 创建proc文件的三种方法(四)

在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试. 大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法. 方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险): 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁): 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整): 示例四:在proc文件中使用内核链表的一个示例(用的方