Linux命令-scp(通过 SSH 远程复制文件)

Linux命令-scp(通过 SSH 远程复制文件)

快速参考

scp(Secure Copy)是通过 SSH 协议在本地和远程主机之间安全复制文件的命令。它加密传输所有数据,包括密码和文件内容,是替代不安全的 rcp 的标准工具。scp 基于 SSH 协议,支持密钥认证、端口指定、限速等功能。

核心优势 :安全加密、基于 SSH、使用简单。对于大文件或需要断点续传的场景,建议使用 rsync

基本语法

bash 复制代码
# 基本语法
scp [选项] 源 目标

# 本地 → 远程
scp local_file user@remote:/path/

# 远程 → 本地
scp user@remote:/path/file ./

# 远程 → 远程
scp user1@host1:/path/file user2@host2:/path/

# 复制目录
scp -r local_dir/ user@remote:/path/

安装 scp

bash 复制代码
# scp 是 OpenSSH 的一部分,通常已预装
sudo apt install openssh-client   # Debian/Ubuntu
sudo yum install openssh-clients  # RHEL/CentOS

# 验证安装
which scp
scp -h

常用选项

bash 复制代码
# -r  递归复制目录
scp -r directory/ user@remote:/path/

# -P 端口  指定远程 SSH 端口(注意是大写 P)
scp -P 2222 file.txt user@remote:/path/

# -i 密钥  指定 SSH 私钥文件
scp -i ~/.ssh/id_rsa file.txt user@remote:/path/

# -l 限速  限制带宽(单位 Kbit/s)
scp -l 8000 file.txt user@remote:/path/   # 约 1MB/s

# -C  启用压缩(适合慢速网络)
scp -C large_file.tar.gz user@remote:/path/

# -p  保留文件原始属性(权限、时间戳等)
scp -p file.txt user@remote:/path/

# -q  安静模式(不显示进度条)
scp -q file.txt user@remote:/path/

# -v  调试模式(显示详细连接过程)
scp -v file.txt user@remote:/path/

# -B  批处理模式(不询问密码)
scp -B file.txt user@remote:/path/

# -o 选项  传递 SSH 选项
scp -o "StrictHostKeyChecking=no" file.txt user@remote:/path/

本地到远程

bash 复制代码
# 复制单个文件
scp file.txt user@192.168.1.100:/home/user/

# 复制并指定端口
scp -P 2222 file.txt user@192.168.1.100:/home/user/

# 复制目录
scp -r project/ user@192.168.1.100:/home/user/

# 使用密钥认证
scp -i ~/.ssh/id_rsa file.txt user@192.168.1.100:/home/user/

# 复制多个文件
scp file1.txt file2.txt file3.txt user@192.168.1.100:/home/user/

# 使用通配符
scp *.log user@192.168.1.100:/var/log/

# 保留文件属性
scp -p file.txt user@192.168.1.100:/home/user/

# 限速传输
scp -l 4000 large_file.iso user@192.168.1.100:/home/user/

远程到本地

bash 复制代码
# 复制单个文件
scp user@192.168.1.100:/home/user/file.txt ./

# 复制目录
scp -r user@192.168.1.100:/home/user/project/ ./

# 指定端口和密钥
scp -P 2222 -i ~/.ssh/id_rsa user@192.168.1.100:/home/user/file.txt ./

# 复制并重命名
scp user@192.168.1.100:/home/user/file.txt ./new_name.txt

# 从远程复制多个文件(需要引号)
scp "user@192.168.1.100:/home/user/{file1.txt,file2.txt}" ./

远程到远程

bash 复制代码
# 在两台远程主机之间复制
scp user1@host1:/path/file user2@host2:/path/

# ⚠️ 注意:数据会经过本地中转
# 如果要直接在两台主机间传输(不经过本地),使用 -3 选项
scp -3 user1@host1:/path/file user2@host2:/path/

配置 SSH 简化 scp 使用

bash 复制代码
# 编辑 ~/.ssh/config
cat >> ~/.ssh/config << 'EOF'
Host server1
    HostName 192.168.1.100
    User myuser
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
EOF

chmod 600 ~/.ssh/config

# 现在可以简化命令
scp file.txt server1:/home/user/
scp -r project/ server1:/home/user/

与 rsync 对比

bash 复制代码
# === scp:简单直接 ===
# 优点:简单、安全、不需要额外配置
# 缺点:不支持断点续传、不支持增量传输、大文件传输慢

scp large_file.iso user@remote:/path/

# === rsync:功能强大 ===
# 优点:增量传输、断点续传、压缩、限速、删除同步
# 缺点:命令稍复杂

rsync -avzP large_file.iso user@remote:/path/

# === 选择建议 ===
# 简单场景(少量文件、小文件):用 scp
# 复杂场景(大量文件、大文件、需要断点续传):用 rsync
# 备份场景:用 rsync
# 临时复制:用 scp

故障排查

bash 复制代码
# 问题1:scp 报错 "Permission denied"
# 解决:检查远程目录权限
ssh user@remote "ls -la /path/"

# 问题2:scp 报错 "No route to host"
# 解决:检查网络连通性
ping remote_host
nc -zv remote_host 22

# 问题3:大文件传输中断
# 解决:使用 rsync 的断点续传
rsync -avzP --partial large_file.iso user@remote:/path/

# 问题4:scp 很慢
# 解决:启用压缩或限速
scp -C file.txt user@remote:/path/

总结

核心价值scp 是最常用的安全远程文件复制工具,简单、安全、基于 SSH。
常用组合

  • scp file user@host:/path/:本地→远程
  • scp user@host:/path/file ./:远程→本地
  • scp -r dir/ user@host:/path/:递归复制目录
  • scp -P 2222 -i key file user@host:/path/:指定端口和密钥
    最佳实践
  1. 配置 ~/.ssh/config 简化连接
  2. 大文件使用 rsync -avzP 替代
  3. 注意 -P(大写)指定端口(不是小写 -p
  4. 敏感文件确保使用密钥认证
相关推荐
薛定谔的悦3 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
2601_962218476 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
智塑未来6 小时前
中小公司在线文档选型:从协作入口到安全边界
运维·安全
新时代牛马6 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
智购科技无人售货机厂家6 小时前
2026自动售货机制冷系统维护指南:从散热器清洁到压缩机换油的工程实践~YH
运维·redis·物联网·缓存·架构
剑客的茶馆6 小时前
开发者,运维怎样转行FDE?
运维·ai·开发·fde
Julien20046 小时前
控制 SELinux 文件上下文
linux·运维·服务器
sulikey7 小时前
Linux Core Dump 完全指南:从原理到实战的崩溃调试手册。什么是core dump?程序报错core dumped怎么办?
linux·服务器·操作系统·调试·coredump
众壹新能源科技7 小时前
功率预测误差考核怎么降?从气象源到上报口径的排查清单
运维·人工智能·自动化
DevLoom_8 小时前
SD卡插电脑提示:驱动器中的磁盘未被格式化?恢复数据正确处理步骤
运维·服务器·电脑