在开发中,我们经常会遇到这样的场景,两台Linux服务器需要互相复制文件。常见的场景是可以通过堡垒计算机登录远程Linux服务器,但是堡垒计算机上没有对应的ftp可视化工具。在这种情况下,需要远程复制命令。
Scp是安全复制,一个用于在linux下远程复制文件的命令。有时,需要从远程服务器获取文件,该服务器既没有配置ftp服务器,也没有共享。当无法通过常规手段获取文件时,只能通过简单的scp命令来实现。
语法:
scp [-1246BCpqrv] [-c密码][-F ssh _ config][-I identity _ file]
[-l限制] [-o ssh_option] [-P端口] [-S程序]
[[user @]host 1:]文件1 [.][[用户@]主机2:]文件2
参数:
-1:强制scp命令使用协议ssh1。
-2:强制scp命令使用协议ssh2
-4:强制scp命令仅使用IPv4寻址。
-6:强制scp命令仅使用IPv6寻址。
-B:使用批量模式(传输时不要索要传输密码或短语)
-C:允许压缩。(将-C标志传递给ssh以打开压缩功能)
-p:保留原文件的修改时间、访问时间和访问权限。
-q:不显示传输进度条。
递归复制整个目录。
-v:详细显示输出。而scp ssh(1)会显示整个过程的调试信息。此信息用于调试连接、验证和配置问题。
-c密码:用密码加密数据传输,这个选项会直接传递给ssh。
-F ssh_config:指定一个替代的ssh配置文件,这个参数直接传递给ssh。
-i identity_file:从指定的文件中读取用于传输的密钥文件,这个参数直接传递给ssh。
-l limit:限制用户可以使用的带宽,以kbit/s为单位。
-o ssh_option:如果您习惯使用ssh_config(5)中的参数传递方法,
-P端口:注意是大写的P,port是用来指定数据传输的端口号。
-S程序:指定用于加密传输的程序。这个程序必须能够理解ssh(1)的选项。
0x01:将本机文件复制到远程服务器上
# scp/home/Oracle/news . txt root @ 192 . 168 . 6 . 129:/tmp
分析:
/home/oracle/:本地文件的绝对路径。
News.txt:要复制到服务器的本地文件。
Root:以root用户身份登录远程服务器(也可以使用其他具有相同权限的用户)。
192.168.6.129:远程服务器的ip地址(也可以使用域名或机器名)
/tmp:本地文件复制到远程服务器的路径。
0x02: 将远程服务器上的文件复制到本机
# scp remote @ www . itpk.com :/usr/local/sin . sh/home/Oracle
远程:通过远程用户登录远程服务器(也可以使用具有相同权限的其他用户)
Www.itpk.com:远程服务器的域名(当然也可以使用服务器的ip地址)
/usr/local/sin.sh:位于远程服务器上要复制到这台计算机上的文件。
/home/oracle:将远程文件复制到本地的绝对路径。
0x03:需要注意两点
如果远程服务器的防火墙有特殊限制,scp就要取一个特殊的端口,具体的端口要看情况而定。命令格式如下:
# scp-p 4588 remote @ www . itok.com :/usr/local/sin . sh/home/Oracle
使用scp时,要注意使用的用户是否有权限读取远程服务器对应的文件。