下面给你一份 最清晰、最全面、通俗易懂的 Linux scp 文件传输命令详解,适合学习与项目实战使用。


🐧 Linux 文件传输命令:scp 最全详解

scp(secure copy)是 Linux 中用于 跨服务器、跨主机之间进行安全文件拷贝 的命令,底层基于 SSH,因此传输过程是加密的,安全性高、使用方便。

适用场景包括:

  • 从本地传文件到服务器
  • 从服务器下载文件到本地
  • 服务器之间互传文件
  • 上传/下载整个目录

1️⃣ 基本语法

scp [参数] 源路径 目标路径

路径格式支持:

用户@IP:文件路径

例如:

root@192.168.1.10:/home/root/test.txt


2️⃣ 常用参数说明

参数作用
-r递归复制目录(复制文件夹必带)
-p保留文件属性(权限、修改日期等)
-PSSH 端口号(大写 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 对比(常被问)

对比项scprsync
增量同步❌ 不支持✔ 支持
大文件稳定性一般更稳
速度中等更快
恢复中断❌ 不支持✔ 可断点续传
常用场景临时传文件大量数据同步

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/