前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux的scp指令使用场景

Linux的scp指令使用场景

作者头像
bisal
发布2021-02-01 11:56:50
1.1K0
发布2021-02-01 11:56:50
举报
文章被收录于专栏:bisal的个人杂货铺

Linux的服务器之间传文件的指令操作通常有两种,一种是sftp、ftp,另一种是scp,这两类指令,都可以实现文件的上传和下载。但是,如果不是写在脚本中,而是纯指令操作,sftp和ftp在登陆后才可以执行cd或者直接cp,因此,包括登陆在内,至少需要两次指令操作,而scp只需要一次操作即可完成文件的上传和下载。

scp的option介绍,可以参考man,

代码语言:javascript
复制
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

option参数说明,

-1:强制scp命令使用协议ssh1 -2:强制scp命令使用协议ssh2 -4:强制scp命令只使用IPv4寻址 -6:强制scp命令只使用IPv6寻址 -B:使用批处理模式(传输过程中不询问传输口令或短语) -C:允许压缩。(将-C标志传递给ssh,从而打开压缩功能) -p:保留原文件的修改时间,访问时间和访问权限。 -q:不显示传输进度条。 -r:递归复制整个目录。 -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 -c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh。 -F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh。 -i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 -l limit:限定用户所能使用的带宽,以Kbit/s为单位。 -o ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式, -P port:注意是大写的P, port是指定数据传输用到的端口号 -S program:指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

scp缩写如下,

代码语言:javascript
复制
scp [可选参数] file_source file_target 

通过一台机器,就可以模拟文件的上传和下载,为了演示方便,我在一台服务器上创建了两个目录,一个是local代表本地,一个是remote代表远程,local中有两个文件,1.txt和2.txt。

P.S. scp,不仅仅可以上传,还可以下载,这就是为什么上述缩写中是file_source源文件和file_target目标文件,而不是file_local本地文件,file_remote远程文件。

场景1,本地上传文件至远程服务器

(1) 将本地的1.txt上传至10.221.0.1用户oracle的路径/home/oracle/test/remote下,文件名称还是1.txt,

代码语言:javascript
复制
[test@app local]$ scp 1.txt oracle@10.221.0.1:/home/oracle/test/remote/

(2) 指令不带用户名,默认远程服务器用户名和当前执行指令的用户名相同,如下所示,默认文件上传至服务器10.221.0.1的用户test路径下,

代码语言:javascript
复制
[test@app local]$ scp 1.txt 10.221.0.1:/home/oracle/test/remote/

(3) 指定远程路径的文件名,则会对上传文件进行改名,如下所示,将本地的1.txt上传至远程服务器,文件名称改为a.txt,

代码语言:javascript
复制
[oracle@app local]$ scp 1.txt oracle@10.221.0.1:/home/oracle/test/remote/a.txt
[test@app local]$ scp 1.txt 10.221.0.1:/home/oracle/test/remote/a.txt

场景2,本地上传文件夹至远程服务器

此时可以使用-r选项递归复制文件夹,不改动文件夹的名称,

代码语言:javascript
复制
[oracle@app test]$ scp -r local oracle@10.221.0.1:/home/oracle/test/remote/
[oracle@app test]$ scp -r local 10.221.0.1:/home/oracle/test/remote/

改动文件夹的名称,

代码语言:javascript
复制
[oracle@app test]$ scp -r local oracle@10.221.0.1:/home/oracle/test/remote/test
[oracle@app test]$ scp -r local 10.221.0.1:/home/oracle/test/remote/test

场景3,从远程服务器下载文件/文件夹

(1) 下载文件,

代码语言:javascript
复制
[oracle@app local]$ scp oracle@10.221.0.1:/home/oracle/test/remote/1.txt 1.txt
[oracle@app local]$ scp 10.221.0.1:/home/oracle/test/remote/1.txt 1.txt

(2) 下载文件夹,

代码语言:javascript
复制
[oracle@app local]$ scp -r oracle@10.221.0.1:/home/oracle/test/remote/test test
[oracle@app local]$ scp -r 10.221.0.1:/home/oracle/test/remote/test test

场景4,本地上传多个文件至远程服务器

输入多个文件名,

代码语言:javascript
复制
[oracle@app local]$ scp 1.txt 2.txt oracle@10.221.0.1:/home/oracle/test/remote
[oracle@app local]$ scp 1.txt 2.txt 10.221.0.1:/home/oracle/test/remote

场景5,从远程服务器下载多个文件

学习一下场景4,可能会这么写,的确可以,但是对每个文件都需要输入一次用户名(当然设置ssh互信就会更简单),

代码语言:javascript
复制
[oracle@app local]$ scp oracle@10.221.0.1:/home/oracle/test/remote/1.txt oracle@10.221.0.1:/home/oracle/test/remote/2.txt .
oracle@10.221.0.1's password: 
1.txt                                                         100%    0     0.0KB/s   00:00    
oracle@10.221.0.1's password: 
2.txt                                                         100%    0     0.0KB/s   00:00   

还可以使用通配符的形式,但是特殊字符需要处理下,一次操作更简单,

代码语言:javascript
复制
[oracle@app local]$ scp oracle@10.221.0.1:/home/oracle/test/remote/\{1.txt,2.txt\} .
oracle@10.221.0.1's password: 
1.txt                                                         100%    0     0.0KB/s   00:00    
2.txt                                                         100%    0     0.0KB/s   00:00

参考,

https://blog.csdn.net/life_journey/article/details/100916011

https://www.runoob.com/linux/linux-comm-scp.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档