下面给你一份 最清晰、最全面、通俗易懂的 Linux scp 文件传输命令详解,适合学习与项目实战使用。
🐧 Linux 文件传输命令:scp 最全详解
scp(secure copy)是 Linux 中用于 跨服务器、跨主机之间进行安全文件拷贝 的命令,底层基于 SSH,因此传输过程是加密的,安全性高、使用方便。
适用场景包括:
- 从本地传文件到服务器
- 从服务器下载文件到本地
- 服务器之间互传文件
- 上传/下载整个目录
1️⃣ 基本语法
scp [参数] 源路径 目标路径
路径格式支持:
用户@IP:文件路径
例如:
root@192.168.1.10:/home/root/test.txt
2️⃣ 常用参数说明
| 参数 | 作用 |
|---|---|
-r | 递归复制目录(复制文件夹必带) |
-p | 保留文件属性(权限、修改日期等) |
-P | SSH 端口号(大写 P) |
-v | 显示传输过程,调试时使用 |
-C | 压缩传输,提高速度 |
-l | 限制带宽(Kbit/s) |
最常用组合是:
scp -rP 22
3️⃣ 本地 → 远程:上传文件
📌 上传文件到服务器
scp local.txt root@1.2.3.4:/home/root/
上传整个目录:
scp -r myfolder root@1.2.3.4:/home/root/
服务器使用非 22 端口:
scp -P 2222 local.txt root@1.2.3.4:/home/root/
4️⃣ 远程 → 本地:下载文件
📌 下载服务器文件到本地
scp root@1.2.3.4:/home/root/test.txt ./
下载整个目录:
scp -r root@1.2.3.4:/home/root/data ./data
5️⃣ 服务器 ↔ 服务器:跨机传输
你可以直接让两台服务器互相传文件(本地不参与):
scp root@1.2.3.4:/home/a.txt root@5.6.7.8:/home/
6️⃣ 常见实战示例合集
✔ 使用压缩提高速度
scp -C bigfile.iso root@1.2.3.4:/home/
✔ 限速传输(避免占满带宽)
scp -l 50000 bigfile.iso root@1.2.3.4:/home/
(50 Mbit/s)
✔ 指定 SSH 密钥
scp -i ~/.ssh/id_rsa local.txt root@1.2.3.4:/home/
7️⃣ 与 rsync 对比(常被问)
| 对比项 | scp | rsync |
|---|---|---|
| 增量同步 | ❌ 不支持 | ✔ 支持 |
| 大文件稳定性 | 一般 | 更稳 |
| 速度 | 中等 | 更快 |
| 恢复中断 | ❌ 不支持 | ✔ 可断点续传 |
| 常用场景 | 临时传文件 | 大量数据同步 |
8️⃣ 避坑指南(非常重要)
❗ 经常搞错大小写的参数
-P= SSH端口-p= 保留权限
❗ 目标路径必须写成目录,否则可能被重命名
scp a.txt root@host:/tmp
和
scp a.txt root@host:/tmp/
含义不一样!
❗ 注意权限
如果提示 permission denied,检查:
- 服务器
/root/...权限 - SSH 权限设置
- 密钥权限
chmod 600 id_rsa
9️⃣ 最常用命令速查(记住这几句就够了)
上传文件:
scp local.txt root@1.2.3.4:/home/
下载文件:
scp root@1.2.3.4:/home/test.txt ./
上传目录:
scp -r folder root@1.2.3.4:/home/
指定端口:
scp -P 2222 a.txt root@host:/home/
发表回复