Linux【2】-管理文件-8--两台Linux系统之间传输文件(scp/rsync)

  • scp
  • rsync差异化传输(支持断点续传,数据同步)
  • 管道传输(降低IO开销)
  • nc传输(一种网络的数据流重定向)
  • 建立文件服务器
  • nfs实现文件共享

这里就先用一下scp

一、scp传输

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

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

1.1 复制文件

将本地文件拷贝到远程

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

1.2 复制目录

将本地目录拷贝到远程

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

从远程将目录拷回本地

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

命令格式

scp -r local_folder remote_username@remote_ip:remote_folder 
或者 
scp -r local_folder remote_ip:remote_folder 

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

例子

scp -r /home/space/music/ root@www.cumt.edu.cn:/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 地址

举例说明

把计算机名为“v111.nn”下所有的东西都拷贝到本机/home/admin/目录下

scp -r * v111.nn:/home/admin/ 

以admin的身份把IP地址为“192.168.219.125”,/home/admin/test目录下所有的东西都拷贝到本机/home/admin/目录下

scp -r  admin@192.168.219.125:/home/admin/test  /home/admin/

二、rsync

将服务器端的文件my-repo.bundle下载到本地:

rsync -P --rsh=ssh root@ip:/home/sam/my-repo.bundle my-repo.bundle

该方法支持断点续传

-P: 是包含了 “–partial –progress”, 部分传送和显示进度

三、讨论

3.1 免密传递数据

如果将A的数据传输到B服务器上,这个时候是需要B的密码的。

可以将A的 id_rsa.pub的信息,放到B的~/.ssh/authorized_key

具体方法参见 远程连接-ssh

参考资料

https://blog.csdn.net/gatieme/article/details/51673229

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn