Linux SCP命令详解
Linux SCP命令详解
基本语法
scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
命令介绍
-
SCP全称是:secure copy protocol,它是一个命令行工具,允许用户在两个主机之间安全的复制文件和目录。
-
该协议确保文件的传输是加密的,以防止任何有可疑意图的人获得敏感信息。
-
SCP通过SSH连接加密传输,确保数据传输过程中不会被攻击。
-
特性:简单、安全、在大多数unix系统下都是预安装的。
-
远程主机指定path的形式:
- [user@]host:[path]
- scp://[user@]host[:port][/path]
-
本机文件可以指定为绝对路径或相对路径。
-
scp默认加密算法是:AES-128
-
为了能够复制和写入文件,主机至少要有读和写的权限。
-
scp在复制相同文件时,会默认进行覆盖,没有任何的警告提示。
-
在复制大文件时,终端可能会睡眠终止传输过程,建议使用tmux来维持会话。
参数详解
-P
指定远程主机的端口-p
复制文件时,保留原始文件的修改次数、访问次数和模式、创建时间等-q
静默传输模式,禁用进度条输出信息和警告-r
递归复制整个目录,复制目录时要传-v
debug模式,输出有用的debug连接、授权、配置等信息-C
强制scp压缩文件传输,当文件已经是压缩文件时,此参数不生效,例如:.zip,.rar,.7zip等-c
指定传输数据的加密算法-l
限制使用的带宽-3
两台远程主机之间的副本通过本地主机传输。如果没有这个选项,数据将直接在两个远程主机之间复制。注意,该选项禁用进度条并为第二台主机选择批处理模式,因为scp不能为两台主机请求密码或口令-4
强制scp只使用ipv4地址-6
强制scp只使用ipv6地址-B
选择批处理模式(阻止终端询问ssh密码)-F
指定ssh配置文件(ssh_config),这个选项会直接传给ssh-i
指定读取用于公钥身份验证的标识(私钥)的文件
命令用法示例
- 从本机复制文件到远程主机一般用法
scp file.txt root@192.168.1.1:/dir
- 从本机复制文件到远程主机的家目录
scp file.txt root@192.168.1.1: (此处省略了远程目录,默认为主机的家目录,即:~)
- 从本机复制文件到远程主机,指定复制后的文件名称
scp file.txt root@192.168.1.1:file2.txt
- 从本机复制文件到远程主机,指定远程主机的端口
scp -P 24831 file.text root@192.168.1.1:
- 从本机同时复制多个文件到远程主机
scp file1.txt file2.txt file3.txt root@192.168.1.1:
- 从本机复制目录到远程主机
scp -r directory root@192.168.1.1:
- 从本机复制文件到远程主机,保留源文件的属性
scp -p file.txt root@192.168.1.1:
- 从本机复制文件到远程主机,输出debug信息
scp -v file.txt root@192.168.1.1:
- 从本机复制文件到远程主机,静默传输
scp -q file.txt root@192.168.1.1:
- 从本机复制文件到远程主机,强制压缩文件
scp -C -r directory root@192.168.1.1:
- 从本机复制文件到远程主机,指定加密的算法
scp -c 3des file.txt root@192.168.1.1:
- 从本机复制文件到远程主机,限制带宽
scp -l 400 file.txt root@192.168.1.1: 限制传输速度为50kb/s 需要记住的一点是,带宽是以千比特/秒(kbps)指定的。这意味着8位等于1字节
- 从远程主机复制文件到本机一般用法
scp root@192.168.1.1:file.txt . 跟本机到远程主机用法相似,只是调换主机顺序
- 从远程主机复制多个文件到本机
scp root@192.168.1.1:'{file1.txt,file2.txt}' . scp root@192.168.1.1:\{file1.txt,file2.txt\} . 以上只能复制同一个目录下的多个文件,要想复制不同目录的多个文件,需要使用空格分割文件,使用逗号包裹 scp root@192.168.1.1:'/path/file1 /path2/file2 /path3/file3' .
- 在两个远程主机之间复制文件
有一个前提是scp不能为两台主机请求密码,且如果两台主机都带端口的情况,则必须使用
-3
选项,-3
选项时,则scp会禁用进度条并为第二台主机选择批处理模式,所以第二台主机要配置公钥登录,不要使用密码- 不带端口的用法
scp root@192.168.1.1:file.txt root@127.0.0.1:24831: 以上两台主机传输数据不经过本机路由直接传输
- 两台都带端口的用法,使用-3选项,并且使用URI的格式
scp -3 scp://root@127.0.0.1:24831/~/file.txt scp://root@192.168.1.1:25891/~
- 不带端口的用法
退出码
0代表成功,大于0代表失败
历史
scp是基于rcp程序的BSD源代码,来自加州大学校董会
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)