From: https://blog.csdn.net/rhn_111/article/details/130152967

有时候不可避免的需要将文件复制到另外一台服务器上,那么这时就可以使用scp命令远程拷贝文件,scp命令是基于SSH协议,在复制的过程中数据都是加密过的,会比明文传输更为安全。

一.命令介绍
依旧惯例,先到scp的帮助文档中查看命令的概述

scp(secure copy)命令,主要功能是用来远程拷贝文件,可以在多台Linux系统之间复制文件或目录,有些类似于cp命令的功能,但复制的范围是网络上的另一台主机。

二. 命令语法
scp命令语法格式:scp 参数 文件

三. 常用参数
文档中一共有这么多的参数,总结一些比较常用的;

命令选项 含义
-1 使用ssh协议版本1
-2 使用ssh协议版本2
-4 使用ipv4
6 使用ipv6
-B 以批处理模式运行
-C 使用压缩
-F 指定ssh配置文件
-l 指定带宽限制
-o 指定使用的ssh选项
-P 指定远程主机的端口号
-p 保留文件的修改时间,访问时间和权限模式
-q 不显示复制进度
-r 以递归的方式进行复制

四. 参考实例
4.1 从本地远程复制到另一台服务器
4.1.1 拷贝文件到远程服务器
命令格式: 拷贝文件

第一种方式:指定用户名,将文件远程拷贝到另外一台服务器的目录下,命令执行后再输入密码。
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

案例演示:

4.1.2 拷贝目录到远程服务器
命令格式: 拷贝目录

第一种方式:指定用户名,将目录远程拷贝到另外一台服务器的指定目录下,需要使用-r参数表示递归操作,命令执行后再输入密码
scp -r local_folder remote_username@remote_ip:remote_folder

第二种方式:不指定用户名,将目录远程拷贝到另外一台服务器的指定目录下,需要使用-r参数表示递归操作,命令执行后再输入密码
scp -r local_folder remote_ip:remote_folder

案例演示:

4.2 从远程复制到本地服务器
从 远程复制到本地,只要将从本地复制到远程的命令的后2个参数 调换顺序即可,一起来看下。

4.2.1 远程服务器的文件拷贝到本地
第一种方式:指定远程用户名@指定IP:要复制的文件到./,这里./表示将远程服务器上的文件拷贝到本地服务器的当前路径。
scp remote_username@remote_ip:remote_file ./

第二种方式:指定远程用户名@指定IP:要复制的文件到本地服务器指定用户名,指定目录等
scp remote_username@remote_ip:remote_file local_username@local_ip:local_folder

案例演示:

当然也可以拷贝目录,方法还是一样在前面加-r参数,这里就不再演示。

除了可以选择IP来拷贝文件,还可以使用主机名进行拷贝,前提需要先将hostname做hosts映射。