在linux环境下做本机的文件复制,可以使用cp命令进行操作。然而,本地服务器和远程服务器要做文件的传输复制时,cp命令就显得心有余而力不足了。这时,就引出了一个新的命令:scp。在学习这个命令之后,感受到了这个命令的强大之处。下面就将scp命令的几种常用的用法总结一下,方便以后日后查阅,也为有需要的小伙伴提供一丝帮助。

命令参数

在服务器上键入:

scp --help

输出:

usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

这就是scp命令的一个命令格式,针对每个参数的详细意义可以通过 man scp命令进行查阅,这里不多做赘述。


常用命令格式


1. scp local_file remote_username@remote_ip:remote_folder
2. scp local_file remote_username@remote_ip:remote_folder/remote_file
3. scp local_file remote_ip:remote_folder
4. scp local_file remote_ip:remote_folder/remote_file

local_file:本地文件 (绝对路径或相对路径皆可)

remote_username:远程服务器用户名

remote_ip:远程服务器ip

remote_file:远程服务器目标文件名(绝对路径)

本地<->远程复制

举例:

# 从本地复制到远程
scp test.txt jack@192.168.1.198:/home/jack/test
scp test.txt jack@192.168.1.198:/home/jack/test/test.txt
scp test.txt 192.168.1.198:/home/jack/test
scp test.txt 192.168.1.198:/home/jack/test/test.txt

# 从远程复制到本地(仅仅是路径参数调换下位置)
scp jack@192.168.1.198:/home/jack/test text.txt
scp jack@192.168.1.198:/home/jack/test/test.txt test.txt
scp 192.168.1.198:/home/jack/test test.txt
scp 192.168.1.198:/home/jack/test/test.txt test.txt

1, 2方式需要继续键入服务器登录密码
3, 4方式需要键入服务器用户名和密码

复制目录
# 添加参数 -r即可,大多参数的函数与cp命令中参数含义相同
scp -r /test jack@192.168.1.198:/home/jack/test
修改远程服务器ssh端口

在某些情况下,公司为了加强ssh通信的安全性,会对服务器的ssh默认端口22进行修改。然而,上面的命令中并没有涉及到端口的修改。下面就看看这种情况怎么处理。其实,scp早就设定了某个参数为实现自定义端口,没错就是 -P (大写的P)。

scp -P <port> test.txt jack@192.168.1.198:/home/jack/test
添加ssh公钥进行免密传输
# 本地生成ssh密钥
# 将公钥添加至远程主机的authorized_keys中
# 1.手动复制公钥至authorized_keys中
# 2.直接将本地公钥复制到远程服务器相应目录下的authorized_keys中
scp ~/.ssh/id_rsa.pub 192.168.1.198:/root/.ssh/authorized_keys
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐