scp 命令快速参考
scp(Secure Copy 的缩写)是一款基于 SSH 协议的安全文件复制工具,能够在本地与远程主机之间加密传输数据。它最大的优势在于所有传输内容(包括密码和文件)均经过加密保护,因此成为替代不安全的 rcp 的标准方案。只要 SSH 连接可用,scp 即可正常工作,同时支持密钥认证、自定义端口、带宽限制等实用功能,足以应对日常大多数文件传输需求。

核心优势:安全加密、基于 SSH、操作简便。但对于大文件传输或需要断点续传的场景,
rsync通常是更优的选择。
scp 基本语法格式
# 基本语法 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 安装方法详解
# scp 是 OpenSSH 的一部分,通常已预装 sudo apt install openssh-client # Debian/Ubuntu sudo yum install openssh-clients # RHEL/CentOS # 验证安装 which scp scp -h
scp 常用选项及参数说明
# -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/
scp 本地到远程文件复制
# 复制单个文件 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/
scp 远程到本地文件复制
# 复制单个文件
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}" ./
scp 远程到远程文件复制
# 在两台远程主机之间复制 scp user1@host1:/path/file user2@host2:/path/ # ⚠️ 注意:数据会经过本地中转 # 如果要直接在两台主机间传输(不经过本地),使用 -3 选项 scp -3 user1@host1:/path/file user2@host2:/path/
配置 SSH 简化 scp 命令操作
# 编辑 ~/.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/
scp 与 rsync 对比分析
# === scp:简单直接 === # 优点:简单、安全、不需要额外配置 # 缺点:不支持断点续传、不支持增量传输、大文件传输慢 scp large_file.iso user@remote:/path/ # === rsync:功能强大 === # 优点:增量传输、断点续传、压缩、限速、删除同步 # 缺点:命令稍复杂 rsync -a vzP large_file.iso user@remote:/path/ # === 选择建议 === # 简单场景(少量文件、小文件):用 scp # 复杂场景(大量文件、大文件、需要断点续传):用 rsync # 备份场景:用 rsync # 临时复制:用 scp
scp 常见故障排查方法
# 问题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 -a vzP --partial large_file.iso user@remote:/path/ # 问题4:scp 很慢 # 解决:启用压缩或限速 scp -C file.txt user@remote:/path/
scp 命令总结与最佳实践
核心价值: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/:指定端口和密钥进行安全传输
最佳实践:
- 通过配置
~/.ssh/config简化连接操作 - 传输大文件时优先使用
rsync -a vzP替代 - 注意
-P(大写)用于指定端口(不是小写-p) - 处理敏感文件时务必使用密钥认证
