当前位置: 首页 > java >正文

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 查看完整文档。

http://www.xdnf.cn/news/1143.html

相关文章:

  • Java八股 深入理解Spring的AOP 面向切面编程 底层 保姆级教程 手写例子
  • vue3+canvas裁剪框样式【前端】
  • 车载软件架构 --- 驾驶员不感知的控制器软件运行
  • Sentinel源码—8.限流算法和设计模式总结一
  • Java中的方法重写(Override)与方法重载(Overload)详解
  • CSI D-PHY 散谈
  • 【Linux网络】各版本TCP服务器构建 - 从理解到实现
  • 云原生周刊:KubeSphere 平滑升级
  • UWB与GPS技术融合的室内外无缝定位方案
  • QT6 源(43):class QGroupBox : public QWidget ,最常用的容器类 QGroupBox 的源码
  • 网络编程基础
  • mybatis-plus开发orm
  • Word处理控件Spire.Doc系列教程:C# 为 Word 文档设置背景颜色或背景图片
  • 静压模型SWASH学习(9)——平底水槽高频驻波算例(Standing short wave in closed basin)
  • Django 入门实战:从环境搭建到构建你的第一个 Web 应用
  • PyTorch卷积层填充(Padding)与步幅(Stride)详解及代码示例
  • 一款丰富的工作流自动化平台 | N8N 83.6K ⭐
  • 基于外部中中断机制,实现以下功能: 1.按键1,按下和释放后,点亮LED 2.按键2,按下和释放后,熄灭LED 3.按键3,按下和释放后,使得LED闪烁
  • Android 中实现图片翻转动画(卡片翻转效果)
  • react使用01
  • 基于微信小程序的走失儿童帮助系统-项目分享
  • PerfettoSQL
  • 火山引擎实时语音合成WebSocket V3协议Python实现demo
  • redis数据类型-基数统计HyperLogLog
  • 搜索引擎的高级语法
  • 前端性能优化全攻略:JavaScript 优化、DOM 操作、内存管理、资源压缩与合并、构建工具及性能监控
  • 复刻低成本机械臂 SO-ARM100 3D 打印篇
  • RHCE 作业二(密钥登录实验)
  • XPath 语法入门
  • day35图像处理OpenCV