知识分享之Linux——scp的常用命令
背景
日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。
开发环境
- 系统:Ubuntu
内容
在使用Linux系统时,我们经常需要将一台服务器中的文件或文件夹移动到另一台服务器中,这时我们就需要使用scp命令,scp全称是secure copy,其本身是基于ssh进行远程文件复制的命令。
语法:
scp [可选参数][原始路径][目的路径]
这里我们的原始路径和目的路径都可以写为远程路径或本地路径,当然更多的时候我们使用起来是一个本地路径一个远程路径。
常用参数:
命令 | 描述 |
---|---|
-1 或 -2 | 主要用于指定使用的协议是ssh1或者是ssh2 |
-4 或 -6 | 主要用于指定使用的网络协议是IPv4还是IPv6 |
-B | 直接使用批处理模式,不询问传输口令或短语 |
-C | 启用压缩 |
-p | 保留原文件的操作信息,例如修改时间、权限等 |
-q | 不显示进度条 |
-r | 递归复制整个目录 |
-v | 显示详细信息。 |
-c cipher | 以cipher将数据传输进行加密 |
-F ssh_config | 使用自定义ssh配置文件 |
-i identity_file | 从指定文件中读取传输时使用的密钥文件 |
-l limit | 限定复制过程中使用的带宽,以Kbit/s为单位。 |
-o ssh_option | 采用ssh_config(5)中的参数传递方式。 |
-P port | 数据传输时使用的端口号 |
-S program | 自定义加密程序 |
常用命令:
1、从本地复制文件到远程
scp 本地文件 远程用户名@远程服务器IP:远程服务器中的存储地址
2、从本地复制文件夹到远程
scp -r 本地文件 远程用户名@远程服务器IP:远程服务器中的存储地址
这个命令和cp差不多都是-r进行表示递归整个目录
3、从远程复制到本地
scp -r 远程用户名@远程服务器IP:远程服务器中的存储地址 本地文件
其实本质在开始时就讲到了,原地址和目的地址都可以使用远程地址,这时我们需要从远程复制到本地直接将其地址调换一下即可,同理-r依旧是指的递归整个目录,复制文件时将-r去掉即可。
4、遇到防火墙时复制
scp -P 11100 本地文件 远程用户名@远程服务器IP:远程服务器中的存储地址
根据放开的端口号进行指定即可,要是都没有放开,那就没得玩了。
注:在复制的过程中需要确保本地和远程相关目录均具有相关文件的操作权限,否则复制失败,例如本地是root,远端是一个user1,这时如果文件复制时带着权限过去,那就会失败。
本文声明:
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。