第48篇:FTP 与 TFTP:配置文件备份与上传

关键词:FTP、TFTP、文件传输、配置备份、配置文件上传、华为设备、文件管理


一、引言

在日常网络运维中,配置文件的备份和恢复是最基础也是最重要的操作之一。无论是设备升级前备份当前配置、故障后恢复配置文件,还是将标准配置模板批量下发到多台设备,都离不开文件传输协议。

FTP(File Transfer Protocol)和 TFTP(Trivial File Transfer Protocol)是网络设备中最常用的两种文件传输协议。理解它们的特点、区别和配置方法,是每个网络工程师的必修课。

二、核心概念

2.1 FTP 与 TFTP 对比

对比维度 FTP TFTP
全称 File Transfer Protocol Trivial File Transfer Protocol
端口 21(控制)、20(数据) 69
传输层协议 TCP UDP
可靠性 高(TCP 保证) 低(UDP,简单确认机制)
认证 支持用户名/密码 不支持认证
目录浏览 支持 不支持
文件大小限制 无限制 通常较小(受缓冲区限制)
资源消耗 较高(多连接) 极低
适用场景 大型文件、安全要求高 小型文件、简单场景、嵌入式设备

2.2 FTP 工作模式

模式 连接建立方式 说明
主动模式(PORT) 服务器主动连接客户端的数据端口 客户端防火墙可能阻断
被动模式(PASV) 客户端连接服务器指定的数据端口 服务器防火墙需要开放端口范围

2.3 TFTP 传输模式

模式 说明
NETASCII ASCII 文本模式,适合配置文件
OCTET 二进制模式,适合系统镜像、二进制文件

2.4 华为设备文件类型

文件类型 文件名示例 说明
启动配置文件 vrpcfg.zip 设备启动时加载的配置(保存在存储设备根目录)
当前运行配置 —(位于内存) 设备当前生效的配置,执行 save 后写入启动配置文件
系统软件 s5735i-v200r019c10.cc 设备操作系统镜像
日志文件 logfile/log.log 运行日志,保存 logbuffer 后生成于 flash:/logfile/ 目录
诊断信息 diagnostic_information.zip 故障诊断信息包(collect diagnostic information 生成)

三、技术细节

3.1 华为设备 FTP 服务器配置

# 在华为设备上启用 FTP 服务器,允许外部 FTP 客户端上传/下载文件

# Step 1: 创建 FTP 用户
[HUAWEI] aaa
[HUAWEI-aaa] local-user ftp_admin password cipher Huawei@123
[HUAWEI-aaa] local-user ftp_admin service-type ftp
[HUAWEI-aaa] local-user ftp_admin privilege level 3
[HUAWEI-aaa] local-user ftp_admin ftp-directory cfcard:/

# Step 2: 启用 FTP 服务器
[HUAWEI] ftp server enable

# Step 3: (可选)限制可访问 FTP 服务的源地址范围
[HUAWEI] acl 2001
[HUAWEI-acl-basic-2001] rule 5 permit source 192.168.1.0 0.0.0.255
[HUAWEI] ftp acl 2001

# 验证
<HUAWEI> display ftp-server
# 查看 FTP 服务器使能状态与参数(回显以设备实际为准)
<HUAWEI> display ftp-users
# 查看当前在线 FTP 用户:用户名、客户端 IP、端口、授权目录等

3.2 通过 FTP 备份配置文件

# 在华为设备上作为 FTP 客户端,从远程 FTP 服务器下载/上传文件

# Step 1: 保存当前配置到启动配置
<HUAWEI> save

# Step 2: 查看设备上的文件
<HUAWEI> dir
 Directory of cfcard:/
  Idx  Attr    Size(Byte)  Date         Time       FileName
   0   -rw-    12,345      Jan 15 2024  10:30:00   vrpcfg.zip

# Step 3: 上传配置文件到 FTP 服务器
<HUAWEI> ftp 192.168.1.200
User(192.168.1.200:(none)): backup_user
Password:
ftp> binary                    # 切换到二进制模式
ftp> put vrpcfg.zip            # 上传启动配置
ftp> quit                      # 退出 FTP

# Step 4: 从 FTP 服务器下载配置文件
<HUAWEI> ftp 192.168.1.200
User(192.168.1.200:(none)): backup_user
Password:
ftp> binary
ftp> get backup_config.zip     # 下载配置文件
ftp> quit

3.3 TFTP 文件传输

# TFTP 无需在设备上配置服务器(设备作为客户端连接外部 TFTP 服务器)

# 确保设备与 TFTP 服务器连通
<HUAWEI> ping 10.1.1.2

# 从远端服务器下载文件。
<HUAWEI> tftp 10.1.1.2 get sample.txt sample1.txt

# 上传文件到远端服务器。
<HUAWEI> tftp 10.1.1.2 put sample.txt

# 通过名称为vpn1的VPN实例从远端服务器下载文件。
<HUAWEI> tftp -a 10.1.1.2 10.1.1.1 vpn-instance vpn1 get sample.txt sample1.txt

3.4 批量配置下发(自动化场景)

# 场景:将标准配置模板批量下发到 50 台接入交换机

# Step 1: 准备标准配置文件 standard_config.cfg

# Step 2: 通过脚本批量下发(Python 示例)
# 使用 Netmiko 或 Paramiko 库登录设备批量执行,此处略

# Step 3: 手动逐台下发(小型网络)
# 在每台交换机上执行:
<HUAWEI> tftp 192.168.1.200 get standard_config.cfg cfcard:/standard.cfg
<HUAWEI> system-view
[HUAWEI] load configuration file cfcard:/standard.cfg merge
[HUAWEI] commit
# load configuration file <file> merge:加载本地服务器上的配置文件,并将配置下发至当前设备
# 老版本设备可用 copy + startup saved-configuration + reboot 方式整包加载

# Step 4: 验证配置
<HUAWEI> display current-configuration

3.5 配置文件管理与恢复

# 保存配置
<HUAWEI> save

# 查看文件系统
<HUAWEI> dir cfcard:/

# 删除文件
<HUAWEI> delete /unreserved /force cfcard:/old_config.zip

# 重命名文件
<HUAWEI> rename cfcard:/config.zip cfcard:/config_backup_20261015.zip

# 恢复配置(增量式:逐条下发,不冲掉现有配置)
<HUAWEI> system-view
[HUAWEI] load configuration file cfcard:/backup_config.cfg merge
# 增量合并:将备份配置逐条下发到当前配置,已有配置不受影响
# (VRPv8 的 commit 两阶段模式下可用,需 commit 生效,以设备版本手册为准)

# 恢复配置(整包式:以备份配置作为启动配置,重启后生效)
<HUAWEI> startup saved-configuration cfcard:/backup_config.cfg
<HUAWEI> reboot fast
# 整包覆盖当前配置(谨慎使用!)

四、实战配置/案例分析

4.1 案例一:设备升级前完整备份

背景:某企业核心交换机 S6730 计划从 V200R005 升级到 V200R010,升级前需完整备份配置和系统文件。

# ===== 升级前备份 =====

# Step 1: 保存当前配置与日志
<S6730> save
<S6730> save logfile    # 将日志缓冲区写入 flash:/logfile/log.log

# Step 2: 查看当前系统版本
<S6730> display version
 Huawei Versatile Routing Platform Software
 VRP (R) software, Version 5.170 (S6730 V200R005C10)
# 注:具体显示的 VRP 版本号随产品版本而异

# Step 3: 通过 FTP 上传备份文件到 FTP 服务器
<S6730> ftp 192.168.100.50
User(192.168.100.50:(none)): admin
Password:
ftp> binary
ftp> put vrpcfg.zip S6730_config_20240115.zip
ftp> put s6730-v200r005c10.cc S6730_image_20240115.cc
ftp> put logfile/log.log S6730_log_20240115.log
ftp> put diagnostic_information.zip S6730_diag_20240115.zip
ftp> quit

# Step 4: 下载新版本系统文件
ftp> get S6730_V200R010C10.cc flash:/
# 注意:建议用 FTP(TCP 可靠传输),不用 TFTP(UDP 不可靠)

# Step 5: 设置新版本为下次启动版本
<S6730> startup system-software flash:/S6730_V200R010C10.cc
# 用户视图执行;不同 VRP 版本的语法略有差异(部分老版本用 boot boot-loader),以设备手册为准

# Step 6: 升级后恢复
# 如果升级后出现异常,可以恢复旧版本:
<S6730> startup system-software flash:/s6730-v200r005c10.cc

4.2 案例二:TFTP 传输大文件失败

故障现象:尝试通过 TFTP 下载 500MB 的系统镜像文件,传输中途失败。

# 根因分析:
# 1. TFTP 使用 UDP,没有 TCP 的重传和流量控制机制
# 2. TFTP 默认使用 512 字节的数据包,大文件需要大量小包传输
# 3. 网络抖动时 UDP 丢包,TFTP 超时后直接中断

# 解决方案1:改用 FTP(推荐)
<HUAWEI> ftp 192.168.1.200
User(192.168.1.200:(none)): admin
Password:
ftp> binary
ftp> get S6730_V200R010C10.cc
# FTP 基于 TCP,支持重传,大文件传输更可靠

# 解决方案2:使用 SFTP(更安全)
# SFTP 基于 SSH,加密传输,安全性更高
# 华为设备通常启用 SFTP 服务器功能,由维护终端用 SSH/SFTP 客户端连接设备下载文件

4.3 案例三:配置文件恢复后设备异常

故障背景:管理员从 FTP 下载了一份旧配置进行恢复,恢复后设备路由丢失。

# 根因分析:
# 采用了"整包恢复":将旧配置设为启动配置并重启(startup saved-configuration + reboot),
# 重启后运行的完全是旧配置,期间新增的业务配置(VLAN、静态路由、BGP 等)全部丢失

# 解决方案:
# 1. 恢复前先保存当前配置(save),并核对备份配置的完整性再操作
# 2. 仅需补齐/调整部分配置时,用增量方式下发,而不是整包覆盖
<HUAWEI> system-view
[HUAWEI] load configuration file flash:/old_config.cfg merge
# load configuration file <file> merge:逐条下发备份中的配置,
# 不删除当前配置中已有的内容(VRPv8/commit 模式下可用,需 commit 生效;以手册为准)

# 3. 如果已经整包重启覆盖了,只能手动补回丢失的配置
<HUAWEI> display current-configuration
# 对比备份配置与恢复后的配置,逐项补回

# 最佳实践:
# 1. 恢复配置前先用增量方式测试
# 2. 先在 lab 环境验证,再在生产环境操作
# 3. 恢复后逐项验证业务状态

4.4 Windows 搭建 TFTP 服务器

# 在 Windows 上搭建 TFTP 服务器(用于接收/发送设备文件)

# 方式1: tftpd64(推荐,免费轻量)
# 1. 下载 tftpd64
# 2. 设置 TFTP Root 目录(如 D:\TFTP)
# 3. 启动服务,监听端口 69
# 4. 在防火墙中放行 UDP 69 端口

# 方式2: 使用第三方库 tftpy 搭建简易 TFTP 服务器(UDP 69)
# python -m pip install tftpy
# python -c "import tftpy; tftpy.TftpServer(r'D:\TFTP').listen('0.0.0.0', 69)"

五、总结

传输协议 传输层 认证 安全性 大文件 推荐场景
FTP TCP 用户名/密码 明文传输(不安全) 好 内网文件传输
SFTP TCP(SSH) 用户名/密码 加密传输 好 需要安全传输时
TFTP UDP 无 无安全 差(易失败) 简单场景、无认证需求
HTTP/HTTPS TCP 可选 HTTPS 加密 好 通过 Web 管理界面
文件传输最佳实践 说明
大文件用 FTP/SFTP TFTP 传大文件易失败
升级前完整备份 备份配置+镜像+日志+诊断信息
增量加载优先于整包覆盖 load configuration ... merge 不冲掉已有配置
配置变更前后都备份 便于故障回退
使用版本化命名 config_20240115_v1.zip
定期自动备份 使用脚本定时备份到 FTP 服务器

思考

  1. TFTP 基于 UDP,它如何保证文件传输的完整性?与 TCP 相比有什么优势和劣势?
  2. 为什么"增量加载(load configuration ... merge)"比"整包恢复(startup saved-configuration + 重启)"不易丢失新增配置?什么场景下必须整包恢复?
  3. FTP 主动模式和被动模式的区别是什么?为什么在 NAT 后面通常需要使用被动模式?

下篇预告:第49篇:Telnet 与 SSH:远程管理的安全之选