scp本质是通过SSH加密通道安全复制文件,需掌握本地→远程、远程→本地、远程→远程三种路径格式,注意端口用-P、传目录加-r、提速可用-C压缩或改用rsync。

Linux 下用 scp 传文件,本质就是通过 SSH 加密通道做安全复制,操作简单但细节容易出错。掌握几个关键格式和常见场景,基本就能覆盖日常需求。
基础语法:记住这三种常用写法
scp 的核心是“谁传给谁”,方向分本地→远程、远程→本地、远程→远程(需中转)。关键在于路径写法和冒号位置:
-
本地 → 远程:
scp /path/to/local/file user@host:/path/to/remote/ -
远程 → 本地:
scp user@host:/path/to/remote/file /path/to/local/ -
远程A → 远程B(跳转):
scp user1@host1:/file user2@host2:/dest(需本机能同时 SSH 登录两台)
端口不是22?必须加 -P 参数
很多服务器改了 SSH 端口(比如 2222),不指定就会连不上。注意是大写 -P(小写 -p 是保留文件属性):
scp -P 2222 file.txt user@host:/home/user/- 如果提示
ssh: connect to host xxx port 22: Connection refused,大概率就是端口问题
传整个目录?别忘加 -r 参数
默认 scp 只传文件,传文件夹必须显式加 -r(recursive):
-
scp -r ./myproject/ user@host:/var/www/—— 注意目录末尾斜杠影响行为(带斜杠表示复制内容,不带表示复制整个目录名) - 建议统一用
./myproject/(结尾有 /)避免嵌套一层
提速和省心的小技巧
默认传输没压缩、不显示进度,大文件体验差。加几个参数立刻改善:
- -C:启用压缩(适合文本、日志等可压缩内容)
- -v:查看详细过程(排错用,正常不用)
- -i ~/.ssh/id_rsa_custom:指定私钥(当不用默认密钥时)
- 想看进度?
scp本身不支持,可用rsync -avz --progress替代(功能更强,推荐进阶使用)
基本上就这些。不用记太多,把路径、用户、主机、端口、-r/-P 这几个要素理清,90% 的场景都能搞定。










