H3C交换机配置文件导入实战:备份、传输与恢复全流程
2026/9/18 1:18:35 网站建设 项目流程

前阵子帮一家客户恢复 H3C S5130 的配置,设备被误执行了 reset 操作,重启后只剩下默认配置。手头没有完整备份,唯一能用的就是三个月前导出的一份 startup.cfg。最后就是靠这份配置文件导入,把设备从“裸奔”状态恢复到了原来的业务状态。整个过程看起来就是“传文件 + 改启动文件 + 重启”这三步,但真做起来,里面值得注意的细节太多了。

这篇东西主要写给两类人:一类是已经在用 H3C 交换机、但还没系统搞过配置文件导入的运维;另一类是准备批量给一批新交换机灌配置的网络工程师。核心无非三件事:配置文件格式怎么搞、怎么传到设备上、怎么让它在开机时自动生效。下面我把每一步拆开讲透,最后附上我踩过的坑和排查思路。

1. 先搞清楚“导入配置文件”到底在解决什么问题

1.1 需要导入配置文件的三种典型场景

第一种是设备换新。旧设备用了五六年要退役,新采购的同型号或同平台交换机不可能一台台手工敲命令,直接把旧配置导出来灌进新设备是最快的。第二种是配置丢失恢复。就像我开头说的那个情况,设备被误清空、误恢复出厂、或者 flash 里的启动配置文件损坏,只要有一份以前的配置备份,就能靠导入拉回来。第三种是批量交付。项目上新买几十台接入交换机,配置模板高度一致,无非是 IP、VLAN、接口描述略有差异,这时候手工逐台敲不光效率低,还容易敲错。

另外还有一种场景:你在测试环境里调好了一套配置,想复制到生产环境的多台设备。这种也属于配置文件导入的范畴,本质上是把“已经验证过的配置状态”迁移到另一台设备上。所以配置文件导入不是单指某一个命令,而是一套“备份—传输—生效—验证”的完整操作链。

1.2 运行配置、保存配置、启动配置文件的关系

很多新手分不清这几个概念,先在概念上对齐一下。交换机开机时,BootWare 会从 flash 里读取一个启动配置文件,也就是通常说的 startup.cfg,把它加载成当前运行配置,也就是 running-config。运行配置是内存里的东西,设备重启后如果不保存就全没了。保存配置是存到 flash 里的文件,掉电不丢。

生活里好理解的方式:运行配置像电脑内存里打开的文档,启动配置文件像硬盘上保存的文档。你改了内存文档没按保存,关电脑再打开还是旧内容。对应到交换机上就是改了配置但不执行 save,重启后配置回到以前的状态。配置文件导入要做的,其实就是把一份“硬盘文档”放到指定位置,并告诉系统“下次开机就按这个文档来”,甚至直接替换掉当前运行配置。

1.3 Comware 版本不同,别乱来

H3C 设备目前常见两套系统:老一些的 Comware 5,新一些的 Comware 7。配置文件本身都是文本,但命令体系有差异。比如部分接口命令、AAA 配置、文件系统操作命令,在 Comware 5 和 Comware 7 上不完全一样。

这意味着,从一台 S5120(Comware 5)上导出的配置,直接灌进 S5130(Comware 7),很大概率会出现“部分命令不识别”或者“某些配置没生效”的问题。最稳的做法是找同型号、同 Comware 版本、甚至同软件版本设备的配置文件。版本差太远的时候,宁可花点时间手工改配置,也不要硬灌。

2. 动手前的准备:文件、传输方式与模拟环境

2.1 配置文件就是一段普通文本,但格式有讲究

H3C 的配置文件本质上是文本文件。默认启动文件名一般是 startup.cfg,里面是一行一行的命令。举个例子,一段最简单的配置长这样:

# vlan 10 # interface Vlan-interface10 ip address 192.168.10.254 255.255.255.0 # acl basic 2000 rule 0 permit source 192.168.10.0 0.0.0.255 #

看起来很简单,但注意这几个细节:

  • 文件编码建议用 ASCII 或 UTF-8 无 BOM。用 Windows 记事本另存为 UTF-8 时,容易在文件头写入 BOM,也就是三个不可见字节。H3C 解析配置时第一行就可能带上乱码,然后报错。
  • 换行符建议用 LF,也就是 Unix 风格换行。Windows 记事本默认是 CRLF,也就是回车加换行。有些 H3C 版本对 CRLF 兼容,但有些老版本会出问题。
  • 文件名不要太怪,尽量用英文字母、数字、下划线,不要带空格和中文。很多 TFTP 服务端对中文文件名支持不好,交换机端识别也容易出岔子。

我自己的习惯是:拿到一份配置后,先用 Notepad++ 或 VS Code 打开,右下角看一下编码和换行符,确认是“UTF-8 无 BOM”和“LF”。如果是别人发的文件,先转换再传。

2.2 传输方式横向对比:TFTP 是我的首选

配置文件传到交换机,常见方式有 TFTP、FTP、USB、Console 粘贴等。我日常用得最多的是 TFTP,原因是 H3C 几乎所有设备都内置了 TFTP 客户端,部署简单,不需要登录认证,文件传起来也快。下面这几个方式可以做个对比:

传输方式适用场景优点缺点
Console + 手工粘贴配置非常小、应急恢复不需要 PC 和交换机之间有 IP 通路逐段粘贴容易丢字符,大配置不可行
TFTP最常见、最通用轻量、设备支持好无认证,PC 上要搭服务,且必须同网段
FTP文件较多或想用账号密码有认证,能传目录部分设备型号的 FTP 客户端配置略麻烦
USB现场没有网络环境直接插 U 盘拷贝,最省事很多中低端 H3C 不支持,或需要特定文件系统
SCP/SFTP安全要求高的内网加密传输很多交换机的 SSH 实现仅支持 SCP,配置要看型号

如果你只是给一台交换机导配置文件,TFTP 是性价比最高的方案。如果是很多台设备批量操作,FTP 有账号认证,稍微安全一点点,但控制台命令里会有账号密码明文,也要小心。不管用哪种,都建议在内网操作,不要把 TFTP 服务暴露到公网。

2.3 Windows 上快速搭一个 TFTP 服务器

TFTP 服务器在 Windows 上我一般用 Tftpd64,一个小工具,绿色版解压就能用。步骤不复杂:

  1. 下载 Tftpd64,以管理员身份运行。
  2. 在 Server interfaces 处选择 PC 上连接交换机的网卡 IP,比如 192.168.1.100。
  3. 把 Current Directory 设置成一个专门放配置文件的目录,比如 C:\tftp。
  4. 把要导入的 startup.cfg 放到 C:\tftp 里。
  5. 如果 Windows 防火墙弹出允许访问的提示,选允许;如果没弹,需要手动加一条入站规则放行 UDP 69 端口。
  6. 在交换机上测试连通性:ping 192.168.1.100,能通再继续。

这里有个很容易翻车的点:PC 的 IP 和交换机管理 IP 必须在同一个 VLAN 里。比如交换机管理地址是 192.168.1.1/24,那 PC 就设成 192.168.1.100/24。如果交换机管理地址划分在 VLAN 10,而 PC 接在 VLAN 1,那你得确保 VLAN 间能路由,或者直接把 PC 插到对应 VLAN 的接口上。

用完后记得把 TFTP 服务关掉。TFTP 没有认证机制,放在公网等于裸奔,内网用完就关也是好习惯。

2.4 先拿 HCL 模拟器练手

如果你想在真实设备上操作但心里没底,强烈建议先用 H3C Cloud Lab,也就是 HCL 模拟器练一遍。模拟器里导入配置的流程和真实设备几乎一样,而且环境毁了也不心疼。

不过提一个很多人会卡的地方:HCL 装好了,点启动设备却启动不了。这通常是模拟器依赖的 VirtualBox 和本机 Hyper-V 冲突导致的。如果你电脑开了 Hyper-V 或 Windows 沙盒,HCL 的虚拟设备可能起不来。网上常见的解决办法是关掉 Hyper-V,或者换成与当前 HCL 版本兼容的 VirtualBox 版本。这个跟交换机配置文件导入本身没关系,但环境起不来,练习就无从谈起。先把模拟器跑起来,再练命令。

3. 完整实操:把配置文件导入 H3C 交换机并让它生效

3.1 第一步:先把当前配置备份出来

不管是导新配置还是恢复旧配置,我强烈建议先给当前设备做一次备份。万一导入失败,你至少能回到现在的状态。

操作很简单,先在交换机上执行 save,把当前运行配置保存到 flash 的 startup.cfg。然后把它传到 PC 上的 TFTP 服务器:

<H3C> save force <H3C> dir <H3C> tftp 192.168.1.100 put startup.cfg

执行完,到 PC 的 C:\tftp 目录下确认有没有生成 startup.cfg,再看一眼文件大小。如果你的 flash 里启动配置文件名不是默认的 startup.cfg,可以用display startup先看一下当前启动文件叫什么,再put对应的文件名。

这一步的重点是:先留下后路。我见过不少人在导入新配置之前完全没备份,结果新配置有问题,旧的又没了,只能一根根接口手工敲回来,那叫一个痛苦。

3.2 第二步:用 TFTP 把配置文件传到交换机

现在假设我们要把 PC 上准备好的 startup.cfg 传到交换机 flash 根目录。在交换机用户视图下执行:

<H3C> tftp 192.168.1.100 get startup.cfg <H3C> dir

tftp 的语法是tftp 服务器地址 get 文件名,默认下载到当前目录。H3C 默认当前目录一般就是 flash 根目录,但为了保险,dir看一下文件在不在。同时注意文件大小,和 PC 上的原始文件对比,大小不一致说明传输可能有问题。

这里有一个细节:如果你要导入的文件名和 flash 里已有的 startup.cfg 重名,最好先把旧的改名或删掉,否则下载时会提示文件已存在,或者直接覆盖。覆盖本身没问题,但万一传了一半断掉,flash 里的文件就损坏了。所以我的习惯是先用rename startup.cfg startup.bakdelete /unreserved startup.cfg清理现场,再下载新文件。

所谓的/unreserved参数是永久删除。如果不加这个参数,文件会进回收站,flash 空间可能被占着,大文件的传输还是会失败。

3.3 第三步:设置下次启动加载这个文件

很多人以为把配置文件传到 flash 里,重启就自动生效了。这是最容易踩的坑。交换机启动时并不会自动加载 flash 里的任意 cfg 文件,你必须手动指定“下次启动用哪个配置文件”。命令是:

<H3C> startup saved-configuration flash:/startup.cfg <H3C> display startup

执行完display startup,能看到类似这样的信息:

Current startup saved-configuration file: flash:/startup.cfg Next main startup saved-configuration file: flash:/startup.cfg

看到 Next main 指向你想要的文件,再执行reboot。重启过程中如果配置文件有语法问题,交换机会提示加载失败,虽然一般不会变砖,但会停在空配置状态。

那是不是一定非要重启不可?严格来说,有些场景可以用configuration replace file命令在系统视图下替换当前运行配置,不需要重启。部分 Comware 7 设备支持这个命令,在系统视图下敲configuration replace ?就能看到提示。它适合在不想中断业务时临时加载配置,但副作用是可能直接把当前会话踢掉,而且如果配置里有 IP 地址变更,你可能会瞬间失联。我的建议是:不到万不得已,不要在生产环境用 replace,老老实实走“设置启动文件 + 重启”的流程,至少预期可控。

3.4 不重启就加载配置的替代命令

这里把configuration replace多说几句。它的作用是拿一个配置文件去替换当前运行配置,类似把“硬盘上的文档”直接读进内存,不关机。命令一般长这样:

<H3C> system-view [H3C] configuration replace file flash:/startup.cfg

执行后设备会加载文件中的配置。但注意,这个命令不是所有型号都有,型号不同差异还挺大。如果你敲完提示“Unrecognized command”,说明当前设备不支持,别硬试。即使支持,我也只建议在测试环境用。因为 replace 后你当前所在的终端很可能因为 IP 变化而断掉,如果没通过 Console 操作,你可能连不上设备,还得跑机房。

如果 replace 成功,执行完记得再save一次。否则这次操作只在内存里,下次重启还是旧配置。

4. 常见问题与排错实录:我踩过的坑都在这里

4.1 TFTP 传不上去,先查网络再查服务

TFTP 传文件失败是最常见的问题,现象是执行tftp get后卡一阵子,然后报 Timeout 或 Can't connect to remote server。我一般按这个顺序排:

  • 先测三层连通性:交换机上ping 192.168.1.100,不通就查 IP 地址、VLAN、物理接口状态。
  • 再查 TFTP 服务端绑定地址:Tftpd64 的 Server interfaces 是不是选了和交换机同网段的网卡?PC 如果有多个网卡,选错接口是常事。
  • 然后查防火墙:Windows 防火墙没放行 UDP 69,TFTP 就会超时。这一步卡住的人最多。
  • 最后查目录权限:Tftpd64 的 Current Directory 目录是不是有写入权限。如果是系统保护目录,服务端可能接收不到文件。

如果是put上传失败,也就是从交换机往 PC 传文件失败,除了上面几点,还要看 TFTP 服务端设置里是否勾选了允许写入。Tftpd64 默认允许,但有些安全配置会禁掉写操作。

4.2 设置启动文件失败或启动后配置没生效

startup saved-configuration报错,通常是下面几个原因:

  • 文件名或路径写错。比如文件在 flash 根目录,写成 flash:/conf/startup.cfg,那肯定找不到。先用dir确认文件实际路径。
  • 文件本身不是有效的配置文件。有人把 Word 另存为 .cfg,里面全是富文本内容,那当然识别不了。配置文件必须是纯文本。
  • 文件大小是 0 或者明显不对。TFTP 传了一部分就中断,文件损坏,设置启动文件时也可能报错。
  • 设备 Comware 版本和配置命令不匹配。配置文件里一旦有当前设备根本不认识的命令,部分设备在加载时就会跳过甚至中断。

启动后配置没生效的情况,常见原因是没设置 Next main,或者设置了但执行的是 Save,不是 Startup,概念搞混。记住:save是把当前运行配置写到 flash;startup saved-configuration是告诉 BootWare 下次开机加载哪个文件。两个操作不能互相替代。

4.3 重启后设备失联了:Console 救急步骤

如果导入的配置里管理 VLAN、管理 IP、SSH 或 ACL 设置有问题,重启后很可能出现“网络连不上”的情况。这时候不要慌,Console 线就是救命的。操作流程如下:

  1. 用 Console 线连接设备的 Console 口和 PC 串口。
  2. 打开 SecureCRT、MobaXterm 或 Xshell,建立串口会话。H3C 默认参数通常是波特率 9600、数据位 8、停止位 1、无校验、无流控。
  3. 给交换机重新上电,并在启动过程中紧盯屏幕。出现Press Ctrl+B to enter BootWare Main Menu提示时,马上按 Ctrl+B。
  4. 进入 BootWare 菜单后,不同版本界面不完全一样,找类似“跳过当前配置”“Skip current configuration file”的选项。
  5. 选择跳过配置后,继续正常启动。此时设备会以空配置或默认配置启动,Console 口一般能直接登录。
  6. 登录后重新设置管理地址,再从 TFTP 导入正确的配置。

这里要特别说明:跳过当前配置只是绕过错误的配置文件,并不是清理配置。如果你是因为密码忘了导致进不去系统,那是另一套密码恢复流程,不在本文讨论范围内。但如果是因为配置错误导致失联,跳过配置这个方法非常可靠。

4.4 文本编码、换行符和文件名这些细碎坑

这部分不说可能一辈子也发现不了。我最开始用 Windows 记事本改配置,保存后传上去,交换机提示文件不存在或配置解析失败。后来才发现是 UTF-8 BOM 惹的祸。文件头多了三个字节,H3C 读第一行时把 BOM 当成命令的一部分,整个解析就乱了。

解决办法很简单:用 Notepad++ 或 VS Code 编辑配置文件,状态栏确认:

  • 编码是 UTF-8 无 BOM,如果是有 BOM,菜单里选择“转为 UTF-8 无 BOM”。
  • 换行符是 LF,也就是 Unix (LF),如果不是,在“编辑”菜单里做“行尾转换”到 Unix。

还有一个我常犯的错:文件名太随意。比如把配置文件名写成henan_quyu_v2(1).cfg,带括号和中文。TFTP 服务端可能能显示,但交换机端不一定认。所以我在做批量导配置时,文件名一律统一成小写英文字母加数字,比如bj_office_v10.cfg

4.5 常见错误速查表

现象可能原因处理方式
tftp get 超时网不通、防火墙拦截、服务端选错网卡先 ping,再查 TFTP 服务端网卡和防火墙规则
文件下载成功但大小不对TFTP 服务端目录权限问题、传输中断重新下载,并对比文件大小
startup saved-configuration 失败文件名错误、路径错误、文件损坏用 dir 确认路径和文件大小,必要时重新传输
重启后配置没生效没有设置 Next main 启动文件执行 startup saved-configuration 并确认 display startup
重启后设备失联管理 IP、VLAN、ACL 配置错误Console + BootWare 跳过当前配置,重新导入
配置加载时报错Comware 版本不匹配、命令不识别检查配置文件来源,或手工调整命令格式
文件传到一半突然失败flash 空间不足dir 查看剩余空间,delete 旧文件释放空间

5. 批量部署与配置档案管理的一点经验

5.1 多台交换机统一导入的思路

如果你要一次给 20 台交换机导配置,逐台手工执行会很累。我通常会这么做:

  • 先做好一台标准设备的配置,导出为模板文件。
  • 把每台设备的个性化参数,比如设备名、管理 IP、接口描述,通过脚本批量生成独立的 cfg 文件。
  • 用 TFTP 服务器统一存放这些配置文件,文件名按设备名区分,比如 sw001.cfg、sw002.cfg。
  • 每台新交换机接入后,先用 Console 或默认管理地址设置临时管理 IP,然后依次执行 tftp get、startup saved-configuration、reboot。

批量部署时最忌讳的是图省事,所有设备用同一个配置文件。不同设备的管理 IP、路由、VLAN 接口地址很可能不一样,硬灌一份通用配置,结果就是全网 IP 冲突,相当酸爽。哪怕模板一样,也必须在导入前用脚本或人工把差异化字段替换掉。

5.2 配置文件也要做版本管理

配置文件是设备状态的“基因”,项目多了以后,我习惯用 Git 或 SVN 管配置文件。文件名统一规则是“设备名_业务区域_日期_版本号.cfg”,比如S5130_office_20250615_v1.cfg。每次变更配置之前,先把当前配置导出一份存到仓库,再改配置,改完再导出一份新版本。

这样做的好处是出了事能快速回滚。比如一次配置变更导致业务中断,你不需要凭记忆猜之前是什么状态,直接对比 Git 历史里相邻两个版本,差异一目了然。配合 Prometheus 之类的监控工具,还能看变更前后设备指标的变化,但那是另一个话题了。

5.3 我坚持的几个“土习惯”

最后分享几个我自己的习惯,不算高深,但在关键时刻真能救命:

  • 包里永远有一根 Console 线。网络设备配置文件导入这种事,Console 线就是最后一道保险。没有它,设备失联就只能祈祷还在原有网络里。
  • 任何大操作之前,先save,再display startup确认当前状态。
  • 导入配置文件之前,先dir看文件大小,导入后再dir对比一次,大小完全一致才继续下一步。
  • 文件传上去后,用more flash:/startup.cfg看内容开头,确认不是乱码,再设置启动文件。
  • 所有配置备份都用日期命名,至少保留三个月。别问我为什么是三个月,踩过坑的自然懂。

配置文件导入这件事,操作层面其实不难,难的永远是那些“看起来没问题,一重启就翻车”的细节。只要照着“先备份、再传输、再校验、再设置启动文件”这个顺序来,大部分坑都能避开。希望这篇东西能帮你少走点弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询