> 技术文档 > SCP 命令教程:安全文件传输指南_scp传输文件

SCP 命令教程:安全文件传输指南_scp传输文件

SCP(Secure Copy Protocol)是基于 SSH 的安全文件传输协议,适用于 本地与远程服务器之间两个远程服务器之间 加密传输文件。本教程涵盖常用场景和进阶技巧。


📖 核心语法

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

路径格式说明

类型 格式示例 说明 本地路径 /home/user/file.txt 直接使用绝对或相对路径 远程路径 user@remote:/path/to/file 需包含用户名、主机名/IP和路径

🚀 常用场景

1. 本地 → 远程服务器

# 上传单个文件scp local_file.txt user@remote_host:/target/directory/# 上传整个目录(递归操作)scp -r local_folder/ user@remote_host:/remote/path/

2. 远程服务器 → 本地

# 下载单个文件scp user@remote_host:/remote/file.txt /local/directory/# 下载目录(保留权限)scp -rp user@remote_host:/remote/folder/ ./local_backup/

3. 服务器间直接传输

# 无需经过本地中转scp user1@host1:/path/file user2@host2:/destination/

🔧 关键参数详解

参数 作用 示例 -P 指定 SSH 端口(默认22) scp -P 2222 file.txt user@host:/path -r 递归复制目录 scp -r dir/ user@host:/backup -p 保留文件修改时间和权限 scp -p data.log user@host:/logs -l 限速(单位:Kbit/s) scp -l 512 large_file.iso user@host:/ -v 显示详细传输过程(调试用) scp -v debug.log user@host:/tmp -C 启用压缩(节省带宽) scp -C archive.tar.gz user@host:/

⚠️ 注意事项

  1. 路径准确性
    • 远程路径需写绝对路径(如 /home/user/
    • 使用 ~ 可能因环境不同导致错误
  2. 覆盖风险
    SCP 默认覆盖同名文件,建议先备份
  3. 通配符处理
# 错误!SCP不支持远程路径通配符scp user@host:/tmp/*.log ./ # 正确方式:先在远程执行 tar 压缩ssh user@host \"tar czf - /tmp/*.log\" | tar xzf - -C ./

🔍 错误处理

错误现象 解决方案 Permission denied 检查目标目录写入权限,或使用 sudo No such file or directory 确认路径是否存在(区分大小写) Connection refused 检查 SSH 服务状态和防火墙规则 Host key verification failed 删除 ~/.ssh/known_hosts 中对应条目

🛠️ 替代工具对比

工具 优点 适用场景 rsync 增量同步、断点续传 大文件/定期备份 sftp 交互式操作、文件管理 需要浏览目录结构时 curl 支持 HTTP/FTP 协议 非SSH环境下的简单传输

💡 实战示例

压缩传输大文件

# 本地压缩后传输(节省带宽)tar czf - big_folder | scp -C - user@host:/backup/

跨跳板机传输

# 通过跳板机中转(-o ProxyJump)scp -o ProxyJump=jump_user@jump_host file.txt target_user@target_host:/

掌握 SCP 可显著提升服务器管理效率。建议结合 rsync 处理频繁更新的文件,并通过 man scp 查看完整文档。