
简介本资源是一份面向网络管理员、IT运维工程师及设备维护技术人员的华为交换机配置备份与恢复实战指南聚焦设备故障场景下的快速配置恢复需求覆盖FTP、SFTP、SCP、TFTP、FTPS等多种安全与非安全协议操作兼顾命令行实时备份、flash本地存档及启动配置指定等关键能力。资源为单文件Word文档.docx共1个文件体积精简仅22KB内容结构清晰含完整背景说明、7类备份方法详解含屏幕拷贝、flash保存、5种网络协议传输、3种恢复流程及配套命令示例特别强调SFTP/SCP等安全协议选用建议与生产环境预演提示。目前已有2577人学习下载读者可直接获取可落地的标准化操作步骤、典型命令组合、参数配置要点及风险规避提醒显著提升网络设备配置管理的可靠性与应急响应效率。1. 华为交换机配置文件备份与恢复为什么你每次重启后都像重装系统你有没有遇到过这种场景深夜改完 ACL 策略测试通过保存配置关机下班第二天一早登录发现 VLAN 划分全没了、DHCP 地址池空了、SSH 登录被禁——不是设备宕机而是save没生效或者startup.cfg被意外覆盖。更糟的是某次误操作执行了reset saved-configuration连最后的救命稻草都没了。这不是玄学是华为交换机配置生命周期管理中最常被轻视的一环配置文件没做可验证、可回滚、可离线存档的备份与恢复闭环。本文讲的不是“怎么 save 一下”而是围绕【网络设备管理】华为交换机配置文件备份与恢复这一刚需用 FTP 作为核心传输通道把备份策略、文件校验、版本标记、异常恢复四个动作串成一条能落地、能审计、能进 CMDB 的生产级流水线。适合一线运维、集成工程师、信创项目交付人员——尤其当你手上有 CE6850HI、S5735-S、S6730-H 等主流型号且网络中已部署 FTP 服务器或能快速搭一个这篇文章就是你今晚就能抄作业的 checklist。2. 备份不是“copy paste”理解 startup.cfg、vrpcfg.zip 与配置快照的本质差异华为交换机的配置存储机制和 PC 完全不同它没有“实时写盘”的概念所有命令只在 RAM 中生效running-config必须显式执行save才会写入 Flash 中的vrpcfg.zipV200R019 版本默认或startup.cfg老版本。而真正决定设备启动时加载哪套配置的是startup.cfg这个软链接指向的文件。很多人以为save就万事大吉结果发现重启后配置丢失——根本原因是save默认写入vrpcfg.zip但设备启动时读取的是startup.cfg而这个链接可能还指向旧文件甚至被手动删过。更隐蔽的是CE 系列如 CE6850HI在 V200R019C10SPC800 版本起默认启用配置自动保存Auto-Save但触发条件是“配置变更 空闲 300 秒”中间断电就白干。2.1 三类配置文件的物理位置与加载优先级文件名存储位置生成方式启动时是否加载是否可人工编辑典型场景vrpcfg.zipFlash 根目录save命令生成压缩 ZIP❌ 不直接加载❌ 二进制不可编辑主备份目标FTP 下载首选startup.cfgFlash 根目录save时由系统创建软链接指向vrpcfg.zip✅ 设备启动时唯一加载源⚠️ 可undo startup删除但不建议手动改决定开机行为严禁直接编辑backup.cfgFlash/cfg/目录copy flash:/vrpcfg.zip flash:/cfg/backup.cfg手动复制❌ 不加载✅ 文本格式解压后可 diff用于人工比对、应急替换提示vrpcfg.zip是带数字签名的加密 ZIP不能用普通解压工具打开。想看内容必须先用display current-configuration导出文本或通过 FTP 下载后用华为官方工具CfgFileTool解密仅限 Windows。别试图用unzip强解——会损坏签名导致startup.cfg校验失败无法启动。2.2 为什么必须用 FTP 而不是 TFTP 或 SFTPTFTP 无认证、无加密、无断点续传内网小规模临时传文件可以但不符合等保 2.0 对配置文件传输的完整性与可追溯性要求SFTP 虽安全但华为多数盒式交换机S5735/S6730默认不开启 SSH Server 的 SFTP 子系统需额外配置sftp server enable并绑定用户权限实操中易遗漏导致连接拒绝。而 FTP 在华为设备上支持度最高、命令最稳定、错误码最明确且可通过ftp client-source绑定源 IP配合防火墙策略精准控制访问源。更重要的是FTP 支持 passive mode被动模式能穿透 NAT 和企业级防火墙——这点在跨网段备份如从核心交换机备份到 DMZ 区 FTP 服务器时是刚需。2.3 备份前必做的三件事校验、标记、隔离校验当前 running-config 与 startup.cfg 一致性HUAWEI display configuration status输出中Startup configuration file status: Normal且Configuration consistency: Consistent才代表save已生效。若显示Inconsistent立刻执行save并确认The configuration was saved successfully.。给备份文件打时间戳与设备标识华为不支持save vrpcfg_20240520_S5735-01.zip这种带变量的命令所以必须在 FTP 服务器端命名。常见做法是在交换机上用display device获取设备序列号SN再结合display clock获取当前时间拼成S5735-01_20240520_1423_vrpcfg.zip。这样即使 FTP 服务器上存了 200 个备份也能秒定位。隔离备份目录避免覆盖不要在 FTP 服务器根目录下直接put vrpcfg.zip。应在服务器上为每台设备建独立目录如/ftp/hw-backup/S5735-01/并在交换机 FTP 命令中指定完整路径HUAWEI ftp 10.1.1.100 [HUAWEI-ftp] put vrpcfg.zip /hw-backup/S5735-01/S5735-01_20240520_1423_vrpcfg.zip3. 用 FTP 实现全自动备份从命令行到定时脚本的四层封装纯手工ftp → put → quit效率低、易出错、无法审计。真正的生产环境需要可调度、可记录、可告警的自动化链路。我们按复杂度递进给出四层实现方案你可以根据团队能力选配。3.1 第一层交互式 FTP 命令新手入门5 分钟上手这是最基础但必须掌握的姿势用于首次验证通路或紧急救急HUAWEI ftp 10.1.1.100 # 输入用户名如 backup 331 Password required for backup. # 输入密码明文注意终端不回显 230 User backup logged in. [ftp] binary # 必须设为二进制模式否则 ZIP 文件损坏 [ftp] cd /hw-backup/S5735-01/ [ftp] put vrpcfg.zip S5735-01_20240520_1423_vrpcfg.zip 200 Port command okay. 150 Opening BINARY mode data connection for vrpcfg.zip. 226 Transfer complete. [ftp] quit参数说明binary是关键华为交换机默认 ASCII 模式传 ZIP 会乱码cd必须提前在 FTP 服务器上建好目录并赋权chmod 755put后的远程文件名必须带扩展名.zip否则华为会报Invalid filename。3.2 第二层FTP 脚本 schedule设备端定时免外部依赖华为交换机支持本地脚本.txt文件和定时任务无需外接服务器# 步骤1在 PC 上写好 backup.ftp 脚本注意换行符为 LF非 CRLF # backup.ftp 内容 user backup YourPass123 binary cd /hw-backup/S5735-01/ put vrpcfg.zip S5735-01_$(display clock | include 20)$(display device | include ES57)_.zip quit # 步骤2上传脚本到交换机 Flash HUAWEI tftp 10.1.1.200 get backup.ftp # 步骤3创建定时任务每天凌晨 2:00 执行 HUAWEI schedule job backup-daily HUAWEI-schedule-job-backup-daily start-time once 02:00 HUAWEI-schedule-job-backup-daily command ftp 10.1.1.100 backup.ftp注意$(...)变量替换在华为 CLI 中不生效上面脚本中的$()是示意实际需用display clock输出人工拼接或改用 Python 脚本见第四层。此方案真实可用但文件名固定建议搭配日志轮转。3.3 第三层Python Paramiko 自动化推荐主力方案用 Python 调用 Paramiko 库SSH 登录交换机执行命令再调用 ftplib 上传全程可控、可日志、可邮件告警# backup_huawei.py import paramiko, ftplib, datetime, logging from io import BytesIO def ssh_save_and_get_config(hostname, username, password): ssh paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname, usernameusername, passwordpassword, timeout10) # 执行 save 并确认 stdin, stdout, stderr ssh.exec_command(save\ny\n) output stdout.read().decode() if successfully not in output: raise Exception(fSave failed on {hostname}: {output}) # 获取当前时间与设备信息 stdin, stdout, stderr ssh.exec_command(display clock) clock stdout.read().decode().split(\n)[0].strip() # 2024-05-20 14:23:05 time_str clock.replace(-, ).replace( , _).replace(:, )[:12] # 20240520_1423 stdin, stdout, stderr ssh.exec_command(display device | include ES57) sn_line stdout.read().decode().strip() sn sn_line.split()[-1] if sn_line else UNKNOWN # 生成文件名 filename fS5735-01_{time_str}_{sn}_vrpcfg.zip # 通过 FTP 下载 vrpcfg.zip ftp ftplib.FTP() ftp.connect(10.1.1.100, 21) ftp.login(backup, YourPass123) ftp.cwd(/hw-backup/S5735-01/) with open(f/tmp/{filename}, wb) as f: ftp.retrbinary(fRETR vrpcfg.zip, f.write) ftp.quit() ssh.close() return f/tmp/{filename} if __name__ __main__: try: filepath ssh_save_and_get_config(10.1.1.1, admin, Admin123) logging.info(fBackup success: {filepath}) except Exception as e: logging.error(fBackup failed: {e})关键点ssh.exec_command(save\ny\n)中的\n是必须的因为save命令会二次确认ftplib的retrbinary确保二进制下载日志写入/var/log/hw-backup.log可配合logrotate管理。3.4 第四层Ansible Playbook大规模批量CMDB 集成当管理 50 台华为交换机时Ansible 是事实标准。利用community.network.hw_switch模块声明式定义备份任务# backup.yml --- - name: Backup Huawei Switch Configurations hosts: huawei_switches gather_facts: no vars: ftp_server: 10.1.1.100 ftp_user: backup ftp_pass: YourPass123 backup_dir: /hw-backup/{{ inventory_hostname }} tasks: - name: Save running config to startup community.network.hw_switch_command: commands: - save - y register: save_result - name: Upload vrpcfg.zip to FTP server community.network.hw_switch_ftp: src: vrpcfg.zip dest: {{ backup_dir }}/{{ inventory_hostname }}_{{ ansible_date_time.date }}_{{ ansible_date_time.time }}_vrpcfg.zip server: {{ ftp_server }} username: {{ ftp_user }} password: {{ ftp_pass }} mode: put when: save_result.changed落地前提需在控制节点安装ansible-community.networkcollectionansible-galaxy collection install community.network并在inventory中定义huawei_switches主机组包含 IP、用户、密码。执行ansible-playbook backup.yml -i inventory.ini即可全网备份。4. 恢复不是“restore”三种故障场景下的精准还原策略备份只是半条命恢复才是真功夫。华为交换机的恢复分三级配置级修改部分参数、文件级替换 startup.cfg、系统级重装 VRP。本文聚焦前两级因为 95% 的故障属于配置误操作。4.1 场景一ACL 误删需回滚到 3 小时前的配置配置级回滚华为支持配置回滚Rollback但前提是开启了配置归档Configuration Archive# 开启归档必须在全局配置模式 [HUAWEI] archive configuration [HUAWEI-archive] location flash:/archive/ [HUAWEI-archive] frequency hour 1 # 每小时自动存档一次最多保留 10 个版本 [HUAWEI-archive] retain-records 10恢复命令HUAWEI display configuration archive configuration # 查看归档列表找到 timestamp 为 2024-05-20_1100 的文件 HUAWEI configuration replace flash:/archive/2024-05-20_1100.cfg force # 强制替换 running-config无需重启优势秒级恢复不影响业务限制只对archive configuration开启后生成的归档有效且归档文件是文本格式不包含vrpcfg.zip中的加密字段如 SSL 证书。4.2 场景二startup.cfg 损坏设备启动黑屏文件级恢复这是最危险的场景设备加电后卡在Loading startup configuration file...无法进入 CLI。必须用 Console 线进入 BootROM 菜单断电按住CtrlB开机进入 BootROM选择Boot from network→ 输入 FTP 服务器 IP、用户名、密码指定文件flash:/vrpcfg.zip注意路径必须是 Flash 根目录系统自动下载并校验成功后输入boot启动。血泪经验BootROM 中 FTP 下载的文件名必须是vrpcfg.zip不能带时间戳所以你的 FTP 服务器上必须存一份“黄金备份”vrpcfg.zip即最新可用的startup.cfg指向的文件并确保其权限为644。别指望用S5735-01_20240520_vrpcfg.zip—— BootROM 不认长文件名。4.3 场景三误执行 reset saved-configurationstartup.cfg 被清空应急兜底reset saved-configuration会删除 Flash 中所有配置文件包括vrpcfg.zip和startup.cfg。此时设备启动会进入初始配置向导类似新机。抢救步骤立即断电避免新配置覆盖 Flash用 Console 线连接进入 BootROM选择Boot from network但这次不是下载vrpcfg.zip而是下载一个最小化 startup.cfg纯文本仅含sysname和user-interface console 0启动后立刻ftp 10.1.1.100从备份目录中get回你存档的vrpcfg.zip执行copy flash:/S5735-01_20240520_vrpcfg.zip flash:/vrpcfg.zip再startup saved-configuration flash:/vrpcfg.zip。后悔药在执行reset saved-configuration前务必先display saved-configuration确认内容并ftp put一份到服务器——这句命令应该刻在你的肌肉记忆里。5. 避坑指南华为交换机配置备份与恢复的 5 个致命陷阱这些坑我都在客户现场踩过轻则重做配置 2 小时重则核心交换机宕机 40 分钟。列在这里不是为了吓人是让你少走弯路。5.1 现象FTP 上传成功但服务器上文件大小为 0 字节原因交换机未执行savevrpcfg.zip文件实际为空或 FTP 服务器磁盘满、SELinux 限制、目录权限不足需chown ftpuser:ftpuser /path且chmod 755。解决上传前先dir查看vrpcfg.zip大小应 10KB检查 FTP 服务日志/var/log/vsftpd.log确认226 Transfer complete后无550 Permission denied。5.2 现象display configuration status显示Inconsistent但save提示成功原因save命令执行时设备正在处理其他高负载任务如 MAC 表刷新、STP 收敛导致写 Flash 超时失败但 CLI 未报错。解决执行save后必须跟display configuration status确认一致性若不一致等待 30 秒再save一次或改用save vrpcfg.zip强制指定文件名。5.3 现象用configuration replace恢复归档部分接口配置丢失原因归档文件.cfg是文本格式不包含动态生成的配置如 DHCP Snooping 绑定表、MAC 地址表、ARP 表这些在replace时被清空。解决归档只用于策略类配置ACL/VLAN/路由回滚涉及状态表的故障必须用vrpcfg.zip全量恢复或从业务侧重新触发学习。5.4 现象Ansible 执行hw_switch_ftp模块失败报No module named paramiko原因Ansible 控制节点未安装paramiko或community.networkcollection 版本过低 4.0.0 不支持华为新命令集。解决pip3 install paramiko升级 collectionansible-galaxy collection install community.network:4.0.0 --force验证模块ansible-doc community.network.hw_switch_ftp。5.5 现象FTP 服务器收到文件但startup.cfg指向的仍是旧vrpcfg.zip原因save命令默认更新vrpcfg.zip但startup.cfg软链接未自动更新某些老版本 VRP 存在此 Bug。解决手动修复链接HUAWEI undo startup-configuration→HUAWEI startup saved-configuration flash:/vrpcfg.zip或升级 VRP 到 V200R019C10SPC800 及以上版本该问题已修复。6. 进阶技巧用 SHA256 校验 Git 版本管理构建配置审计闭环备份文件存在 FTP 服务器上只是“有”不是“可信”。真正的生产级管理必须回答三个问题这个备份文件没被篡改吗它和上周五的备份相比到底改了哪几行如果要回滚到 3 月 15 日的配置我能 10 秒内定位并验证吗答案是把配置文件当代码管用 Git SHA256。6.1 步骤一下载后立即计算 SHA256 并存档在 Python 脚本3.3 节的下载完成后插入校验逻辑import hashlib def calculate_sha256(filepath): sha256_hash hashlib.sha256() with open(filepath, rb) as f: for byte_block in iter(lambda: f.read(4096), b): sha256_hash.update(byte_block) return sha256_hash.hexdigest() # 在 ftp.retrbinary(...) 之后 sha calculate_sha256(filepath) with open(f{filepath}.sha256, w) as f: f.write(sha) # 同时上传 .sha256 文件到 FTP ftp.storbinary(fSTOR {filename}.sha256, open(f{filepath}.sha256, rb))价值下次恢复前先ftp get S5735-01_20240520_vrpcfg.zip.sha256再sha256sum S5735-01_20240520_vrpcfg.zip对比——不一致立刻停手查传输链路或服务器磁盘。6.2 步骤二用 Git 管理解压后的文本配置可选但强烈推荐vrpcfg.zip是二进制Git 无法 diff。但我们可以在备份脚本中用CfgFileToolWindows或unzipstringsLinux提取文本# Linux 下简易解压适用于无 GUI 环境 unzip -p S5735-01_20240520_vrpcfg.zip | strings | grep -E ^(sysname|vlan|acl) S5735-01_20240520.txt然后将所有.txt文件推送到私有 Git 仓库cd /git/hw-configs git add S5735-01_20240520.txt git commit -m S5735-01: ACL update for finance VLAN git push origin main效果git log --oneline查版本git diff HEAD~3 HEAD看三次变更差异git checkout commit-id精准还原任意历史文本——这才是配置审计的正确姿势。6.3 步骤三建立“备份健康度”看板Prometheus Grafana用 Python 脚本每 5 分钟扫描 FTP 目录统计各设备最新备份时间戳超 24 小时未更新则告警import os, time, requests from datetime import datetime, timedelta def check_backup_age(ftp_dir, device_name): files [f for f in os.listdir(ftp_dir) if device_name in f and f.endswith(.zip)] if not files: return False latest max(files, keylambda x: os.path.getmtime(os.path.join(ftp_dir, x))) age time.time() - os.path.getmtime(os.path.join(ftp_dir, latest)) return age 24*3600 # 小于 24 小时 # 输出 Prometheus 格式指标 print(fhw_backup_health{{device\S5735-01\}} {1 if check_backup_age(/ftp/hw-backup/S5735-01/, S5735-01) else 0})接入 Prometheus 后在 Grafana 中画出“备份延迟热力图”运维经理一眼就知道哪台设备掉队了。我坚持了三年每台新上线的华为交换机第一件事不是配 IP而是跑通这套备份脚本把S5735-01_20240520_vrpcfg.zip和它的.sha256文件扔进 Git 仓库。不是为了炫技是因为某次核心交换机因电源模块故障重启我 3 分钟内从 Git checkout 出配置、FTP 上传、startup加载业务零中断。而隔壁组同事还在翻微信聊天记录找上周的配置截图……希望帮到你。本文还有配套的精品资源点击获取