SCP 命令教程:安全文件传输指南_scp传输文件
SCP(Secure Copy Protocol)是基于 SSH 的安全文件传输协议,适用于 本地与远程服务器之间 或 两个远程服务器之间 加密传输文件。本教程涵盖常用场景和进阶技巧。
📖 核心语法
scp [参数] 源文件路径 目标路径
路径格式说明
/home/user/file.txt
user@remote:/path/to/file
🚀 常用场景
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
scp -P 2222 file.txt user@host:/path
-r
scp -r dir/ user@host:/backup
-p
scp -p data.log user@host:/logs
-l
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不支持远程路径通配符scp user@host:/tmp/*.log ./ # 正确方式:先在远程执行 tar 压缩ssh user@host \"tar czf - /tmp/*.log\" | tar xzf - -C ./
🔍 错误处理
sudo
~/.ssh/known_hosts
中对应条目🛠️ 替代工具对比
💡 实战示例
压缩传输大文件
# 本地压缩后传输(节省带宽)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
查看完整文档。