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:/ |
⚠️ 注意事项
- 路径准确性
- 远程路径需写绝对路径(如
/home/user/
) - 使用
~
可能因环境不同导致错误
- 覆盖风险
SCP 默认覆盖同名文件,建议先备份 - 通配符处理
scp user@host:/tmp/*.log ./
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/
跨跳板机传输
scp -o ProxyJump=jump_user@jump_host file.txt target_user@target_host:/
掌握 SCP 可显著提升服务器管理效率。建议结合 rsync
处理频繁更新的文件,并通过 man scp
查看完整文档。