重装系统或更换电脑时,Firefox 迁移的关键是保留书签、扩展、配置等个性化环境,仅依赖官方同步或手动复制配置目录容易出现遗漏,而通过脚本化备份更为可控和可重复。
下面介绍一个脚本,在 Firefox 关闭后对配置目录统一整理与备份,自动排除缓存等无关数据,生成带时间点的归档文件,实现可恢复、可回滚的完整备份。
创建脚本
创建以下文件(记得修改用户配置,保存为 UTF-8 BOM):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| @echo off
chcp 65001 >nul
title Firefox 配置一键智能备份与压缩
color 0A
REM ========== 【用户配置区域】请根据实际情况修改 ==========
REM 设置Firefox配置文件夹路径(在Firefox地址栏输入 about:support,点击“打开文件夹”获取)
set "PROFILE_PATH=C:\Users\Aria\AppData\Roaming\Mozilla\Firefox\Profiles\XXX"
REM 设置备份文件存放的根目录(请确保此盘符存在)
set "BACKUP_ROOT=E:\备份"
REM 设置是否在压缩后删除原始备份文件夹(Y=删除只留ZIP,N=保留文件夹和ZIP)
set "DELETE_AFTER_ZIP=Y"
REM ========== 配置结束,以下部分无需修改 ==========
echo.
echo [信息] 开始检查 Firefox 运行状态...
:CHECK_LOOP
tasklist | findstr /i "firefox.exe" >nul
if %ERRORLEVEL% EQU 0 (
echo [警告] 检测到 Firefox 正在运行!
echo.
choice /c YNC /n /t 30 /d N /m "请选择:([Y]等待后重试,[N]强制关闭,[C]取消备份): "
if errorlevel 3 (
echo [信息] 备份操作已取消。
pause
exit /b
)
if errorlevel 2 (
echo [操作] 正在强制结束 Firefox 进程...
taskkill /f /im firefox.exe >nul
goto START_BACKUP
)
if errorlevel 1 (
echo [等待] 请关闭 Firefox 窗口,程序将在30秒后自动检测...
timeout /t 30 /nobreak >nul
goto CHECK_LOOP
)
)
:START_BACKUP
echo [信息] Firefox 已关闭,开始执行备份流程...
REM 1. 确保备份根目录存在
if not exist "%BACKUP_ROOT%" (
echo [操作] 创建备份根目录:%BACKUP_ROOT%
mkdir "%BACKUP_ROOT%"
)
REM 2. 设置固定的镜像备份文件夹路径
set "BACKUP_FOLDER=%BACKUP_ROOT%\Firefox_Profile_Latest"
echo [信息] 备份目标文件夹:%BACKUP_FOLDER%
REM 3. 使用 robocopy 进行镜像同步,并排除临时文件
echo [操作] 开始镜像同步文件...
robocopy "%PROFILE_PATH%" "%BACKUP_FOLDER%" /MIR /R:3 /W:5 /NP /NDL /NFL ^
/XD "Cache" "cache2" "thumbnails" "Crash Reports" "minidumps" "pending" "datareporting" "saved-telemetry-pings" "shader-cache" "startupCache" "MozillaSafeBrowsing" ^
/XF "sessionstore.jsonlz4"
if %ERRORLEVEL% LSS 8 (
echo [成功] 文件镜像同步完成。
) else (
echo [错误] 文件同步过程中可能出现问题。
pause
exit /b
)
REM 4. 打包为ZIP (使用自定义格式: YYYYMMDD-Firefox-HHMMSS)
echo [操作] 正在将备份文件夹压缩为ZIP...
for /f "usebackq delims=" %%i in (`PowerShell -Command "Get-Date -Format 'yyyyMMdd_HHmmss'"`) do set "TIMESTAMP=%%i"
set "ZIP_FILE=%BACKUP_ROOT%\%TIMESTAMP:~0,8%-Firefox-%TIMESTAMP:~9,6%.zip"
PowerShell -Command "& { Compress-Archive -Path """%BACKUP_FOLDER%""" -DestinationPath """%ZIP_FILE%""" -Force }"
REM 等待文件系统刷新
timeout /t 1 /nobreak >nul
if exist "%ZIP_FILE%" (
echo [成功] ZIP压缩包已生成:%ZIP_FILE%
REM 5. 根据设置决定是否删除原始备份文件夹
if /i "%DELETE_AFTER_ZIP%"=="Y" (
echo [操作] 正在删除原始备份文件夹以节省空间...
rmdir /s /q "%BACKUP_FOLDER%"
echo [信息] 原始文件夹已删除,仅保留ZIP包。
)
) else (
echo [错误] ZIP压缩包创建失败。
)
echo.
echo [信息] 所有操作完成。
pause
|
脚本运行逻辑说明:
- 检查 Firefox 是否运行(可选等待关闭 / 强制结束 / 取消备份)。
- 建备份根目录及镜像文件夹
Firefox_Profile_Latest。 - 使用
robocopy /MIR 同步配置文件夹(仅复制变化部分)。 - 自动跳过临时文件(缓存、崩溃报告、遥测数据等)。
- 将镜像文件夹压缩为带时间戳的 ZIP 包(历史归档)。
- 按设置决定是否删除镜像文件夹。
- 输出结果,等待用户确认。
可调整说明:
- 保留上次未关闭标签页:删除
/XF 后的 "sessionstore.jsonlz4"。 - 缩小备份体积:添加
/XF "*.xpi"(恢复后需重下扩展)。 - 修改时间戳格式:改 PowerShell 中的
'yyyyMMdd_HHmmss'(如 'yyyy-MM-dd_HHmm')。
运行脚本
右键点击 以管理员身份运行,确保权限完整。
恢复备份
启动 Firefox 后完全退出,打开 about:support,点击 打开文件夹 定位配置目录,删除内部所有内容,解压备份 ZIP 文件复制进去。重启 Firefox 后,书签、扩展、设置、界面布局等完整恢复。