首页/系统/信创系统运维速查/scp 远程文件传输
命令与包管理65 条

scp 远程文件传输

基于 SSH 的快速复制:本地上传下载、-r 传目录、-P 指定非标准端口;小批量文件交换的直接选择。

信创系统运维速查系统更新于 2026-10-13

scp 是干什么的

scp 基于 SSH 加密通道做文件复制,一条命令就能完成本机与远端的互传,权限与认证完全复用 SSH 的机制。它适合小批量、一次性的文件交换;目录用 -r 递归复制,非标准端口用大写 -P 指定。新版 OpenSSH 的 scp 底层已改为走 SFTP 协议。

基本信息

上传scp 文件 用户@主机:/路径
下载scp 用户@主机:/路径/文件 .
目录-r 递归复制
端口-P 指定非标准端口(大写)
保留时间戳-p(小写)

典型使用场景

  • 部署时把构建产物推到目标服务器
  • 从服务器取回日志或配置文件做分析
  • 交接批量小文件,如证书与脚本
  • 跨主机搬运单个大文件并保留时间戳
  • 临时联调时上传测试数据

典型用法

典型用法
scp app.tar.gz deploy@10.0.10.21:/tmp/          # 上传文件
scp -r ./conf deploy@10.0.10.21:/opt/app/       # 上传整个目录
scp -P 2222 deploy@10.0.10.21:/var/log/app.log .   # 非默认端口下载
scp -p -i ~/.ssh/id_ed25519 big.iso deploy@10.0.10.21:/data/   # 指定私钥并保留时间戳
scp -O old@10.0.1.5:/tmp/file .                 # 老服务端不兼容时退回原协议
sha256sum app.tar.gz                            # 传输后本地校验
ssh deploy@10.0.10.21 'sha256sum /tmp/app.tar.gz'   # 远端核对一致性

常用选项

选项作用注意点
-r递归复制目录链接处理方式与 rsync 不同
-P指定端口(大写)小写 -p 是保留时间戳
-p保留时间戳与权限常用于备份取回
-i指定私钥文件权限需为 600
-O使用旧版传输协议老服务端不兼容时使用
走跳板机或需要断点续传的场景,改用 rsync(可经 ssh 隧道)或 sftp 更合适;大量小文件直接 scp 逐个复制效率偏低,先打包再传更快。

替代方案怎么选

  • 需要增量与断点续传用 rsync
  • 需要交互式浏览远端目录用 sftp
  • 大量小文件先打包成归档再传
  • 跨网段与跳板环境复用已有的 SSH 配置
scp 会复用 SSH 配置:在 ~/.ssh/config 里定义的主机别名、跳板与私钥同样生效,可以少写一长串参数。

易错点

  • 把端口写成小写 -p:-p 表示保留时间戳,端口要用大写 -P,写错会导致连接到默认端口失败
  • 低版本服务端不兼容新版协议:报协议相关错误时加 -O 或改用 sftp 与 rsync
  • 传输大文件不校验:弱网下内容可能不完整,传输前后用 sha256sum 比对
  • 反复重传同一个大文件:scp 不支持续传,网络不稳时用 rsync --partial 更省时间
  • 上传后不核对远端路径与权限:文件已落地但服务读不到,属主与权限要按服务运行账号调整

数据来源与参考

  • OpenSSH scp 手册
  • 运维实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌