主题模式
Are you an LLM? You can read better optimized documentation at /asus/webdav-backup.md for this page in Markdown format
华硕路由器 Merlin 固件使用 WebDAV 自动备份配置文件与 JFFS 分区教程
在折腾华硕路由器的过程中,随着我们配置了静态 DHCP 绑定、端口转发、以及 /jffs/scripts/ 中的开机自启脚本 和 dnsmasq 本地解析文件,路由器的配置数据已经变得非常庞大。
一旦路由器因为固件升级失败、断电变砖,或者双宽带物理损坏需要重置,重新手动配置这些高级规则会让人崩溃。
手动在 Web 页面中导出备份十分繁琐。本文将教你一个极简、轻量、无需在路由器上安装任何插件的方案:利用梅林固件自带的 curl 命令行工具,配合 WebDAV(如坚果云、自建群晖 WebDAV、Alist) 和 Cru 定时服务,实现路由器配置文件与 /jffs 脚本分区每日自动打包备份至云端。
🧭 为什么选择 WebDAV + Curl 备份?
- 免安装,零开销:传统网盘挂载需要编译安装
davfs2等软件包,占用宝贵的路由器 CPU 与内存资源。而curl是梅林固件原生内置的工具,使用 HTTPPUT协议单行命令即可直接上传文件。 - 备份内容极全:不仅备份路由器的 NVRAM 参数设置,还能将你的自定义脚本分区(
/jffs目录,包含科学上网插件配置)全部打包。
🛠️ 第一步:获取你的 WebDAV 凭证
你可以选择国内上传稳定的 坚果云 (Jianguoyun) 作为云端存放点:
- 注册并登录坚果云。
- 进入账户信息 -> “安全设置” -> “第三方应用管理”。
- 点击“添加应用” -> 命名为
router_backup-> 生成一个应用密码。 - 记下三个核心参数:
- 服务器地址 (URL):
https://dav.jianguoyun.com/dav/ - 账号 (Username):你的坚果云邮箱。
- 应用密码 (Password):刚刚生成的独立 App 密码。
- 服务器地址 (URL):
- 在你的坚果云网盘根目录下,新建一个名为
router_backup的文件夹。
📝 第二步:编写自动备份脚本
- 通过 SSH 登录到你的华硕/梅林路由器后台。
- 在 JFFS 脚本目录下新建备份脚本文件:bash
vi /jffs/scripts/backup-to-webdav.sh - 写入以下完整的 Shell 备份脚本:
bash
#!/bin/sh
# 1. 变量配置
WEBDAV_URL="https://dav.jianguoyun.com/dav/router_backup"
WEBDAV_USER="你的坚果云账号邮箱"
WEBDAV_PASS="你的坚果云应用密码"
BACKUP_DIR="/tmp/router_backup"
DATE=$(date +%Y%m%d)
FILE_NAME="asus_merlin_backup_${DATE}.tar.gz"
LOG_FILE="/tmp/router_backup.log"
echo "=== Backup start at $(date) ===" > $LOG_FILE
# 创建临时备份目录
mkdir -p $BACKUP_DIR
# 2. 导出路由器的 NVRAM 设置(包括 Wi-Fi 密码、端口转发等系统参数)
nvram save $BACKUP_DIR/nvram_settings.txt
echo "Exported NVRAM settings." >> $LOG_FILE
# 3. 打包备份整个 /jffs 目录(包含你所有的自定义脚本和插件配置)
tar -zcf $BACKUP_DIR/jffs_backup.tar.gz /jffs
echo "Packaged JFFS partition." >> $LOG_FILE
# 4. 将所有备份打包成一个最终压缩包
tar -zcf /tmp/$FILE_NAME -C $BACKUP_DIR .
# 5. 利用 curl 通过 HTTP PUT 方式上传到坚果云 WebDAV
UPLOAD_STATUS=$(curl -s -o /dev/null -w "%{http_code}" -u "$WEBDAV_USER:$WEBDAV_PASS" -T /tmp/$FILE_NAME "$WEBDAV_URL/$FILE_NAME")
# 6. 清理本地临时文件
rm -rf $BACKUP_DIR
rm -f /tmp/$FILE_NAME
if [ "$UPLOAD_STATUS" = "201" ] || [ "$UPLOAD_STATUS" = "204" ] || [ "$UPLOAD_STATUS" = "200" ]; then
echo "Backup uploaded successfully! HTTP Status: $UPLOAD_STATUS" >> $LOG_FILE
else
echo "Backup upload FAILED! HTTP Status: $UPLOAD_STATUS" >> $LOG_FILE
fi保存并退出。赋予脚本执行权限:
bash
chmod +x /jffs/scripts/backup-to-webdav.sh🔄 第三步:手动测试运行
在 SSH 终端中直接运行该脚本:
bash
sh /jffs/scripts/backup-to-webdav.sh运行完成后,登录你的坚果云网盘,查看 router_backup 目录下是否已经成功生成了一个名为 asus_merlin_backup_当前日期.tar.gz 的文件。
⏰ 第四步:设置每日凌晨自动定时备份
梅林固件内置了极轻量的定时任务管理工具 cru:
- 编辑你的开机自启脚本文件:bash
vi /jffs/scripts/services-start - 在文件尾部(注意要在任何后台死循环程序之前,参考 services-start 安全防卡死守则)追加以下一行:bash
# 每天凌晨 3 点自动运行备份脚本 cru a webdav_router_backup "0 3 * * * /bin/sh /jffs/scripts/backup-to-webdav.sh" - 保存并退出。手动执行一次
sh /jffs/scripts/services-start注入任务即可。
💬 总结
通过此轻量级方案,每天路由器的最新状态都会默默地同步到云端。即便路由器彻底损坏,你只需重装系统后,下载云端的打包文件,将 hosts、dnsmasq 等还原,再执行 nvram restore,即可 100% 满血复活。
- 开机关联:想要学习更多梅林启动流程控制?参考 services-start 开机启动指南。
- 本地分流:路由底层 DNS 解析,查看 dnsmasq 自定义解析与分流。
