找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2041|回复: 8

[建议] 新版是否能新增一项 Preferences 等核心配置,主动防灾备份功能?

[复制链接]
匿名  发表于 2026-3-28 17:25:41 |阅读模式

https:// www. centbrowser. net/zh-cn/forum.php?mod=redirect&goto=findpost&ptid=21750&pid=116682
Admin
强制结束进程,还是有小概率会导致配置文件损坏的,建议你使用账号同步多一重保险

----

在新版的设置里,新增一项是否允许开启核心配置文件本地主动防灾备份功能,每隔 xx 小时备份一次,最多保留 xx 项,备份列表,如何?xx 与备份列表是用户可选或填空项,当开启后,百分将按照设定好的值,自动运行指定批处理(backup.cmd?)或内置文件操作命令,对 User Data \ Default 等多个账户文件夹内的 Preferences 等(可自定义)核心文件,进行备份。万一用户电脑因为蓝屏等意外情况,导致 chrome 崩溃带来的 Preferences 等核心配置文件损坏,问题发生后,用户还能在 ini Backup 文件夹里,找回最近有效的备份进行手动恢复

核心配置文件,本地主动防灾备份功能,这个在所有的第三方浏览器里都很极其罕见,我觉得这个做好了后,能变成百分遇到风险情况时的保底优势,别家出问题就全部凉凉,百分出问题,我们用户还有后备手段(需提前或默认开启)兜底

----

我找了免费尝鲜野龙虾,让他自己思考,为我生成明确的 skill 并自行按照 skill 要求,制作一份示例代码,所需备份文件列表可以在 bat 里手动设置。生成的代码可能有错误,我没有实际运行过,只是提供一个老大开发参考思路
  1. 【批处理文件需求:CentBackup.bat】
  2. 适用场景:Windows第三方Chromium便携浏览器根目录(含chrome.exe、User Data文件夹)
  3. 核心功能:自动备份浏览器用户数据指定文件,自动清理旧备份

  4. 一、固定配置项
  5. 1. backupfiles=50:ini Backup文件夹最多保留50份时间戳备份,超出则递归删除最旧的
  6. 2. backupDefaults=1:1=备份User Data下所有Default/Default1/Default2...;0=仅备份Default
  7. 3. 备份文件列表:Preferences、History、Login Data

  8. 二、执行流程(严格顺序)
  9. 1. 校验脚本必须在chrome.exe同级目录运行,否则报错退出
  10. 2. 校验User Data目录存在,不存在则退出返回错误码1
  11. 3. 获取当前系统时间,格式化为:2026-03-28 14-48-54
  12. 4. 在根目录创建 ini Backup 文件夹(如已存在则跳过创建步骤),子目录为时间戳文件夹
  13. 5. 根据backupDefaults配置,枚举所有需要备份的Default文件夹
  14. 6. 将指定文件复制到对应时间戳目录,保留原目录结构
  15. 7. 自动清理超出数量的旧备份,仅保留最新N份
  16. 8. 复制成功:静默退出;复制失败:显示报错信息,按任意键后退出

  17. 三、输出目录结构示例
  18. 根目录
  19. ├─ ini Backup
  20. │  ├─ 2026-03-28 14-48-54
  21. │  │  ├─ Default
  22. │  │  │  ├─ Preferences
  23. │  │  │  ├─ History
  24. │  │  │  └─ Login Data
  25. │  │  └─ Default2(按需生成)
  26. │  └─ 2026-03-28 15-48-54
  27. ├─ chrome.exe
  28. └─ User Data

  29. 四、使用说明
  30. 将 CentBackup.bat 放在便携浏览器根目录(和 chrome.exe 同级)
  31. 双击运行,自动完成备份
  32. 备份文件保存在 ini Backup 文件夹,自动保留最新 50 份
  33. 复制失败会弹窗提示,成功则静默退出
复制代码
  1. @echo off
  2. chcp 65001 >nul
  3. setlocal enabledelayedexpansion

  4. :: ===================== 核心配置项(可自行修改) =====================
  5. set "backupfiles=50"          :: 最大保留备份份数,超出自动删除最旧的
  6. set "backupDefaults=1"        :: 1=备份所有Default/Default1/Default2... 0=仅备份Default
  7. :: 备份文件列表(无后缀,每行一个)
  8. set "backupList=Preferences History Login Data"
  9. :: ====================================================================

  10. :: ===================== 路径初始化与根目录校验 =====================
  11. set "ExePath=%~dp0chrome.exe"
  12. set "RootDir=%~dp0"
  13. set "UserDataDir=%~dp0User Data"
  14. set "BackupRoot=%RootDir%ini Backup"

  15. :: 校验:必须在chrome.exe同级目录运行
  16. if not exist "%ExePath%" (
  17.     echo 错误:脚本未放置在 chrome.exe 同级根目录!
  18.     pause >nul
  19.     exit /b 1
  20. )

  21. :: 校验:用户数据目录不存在,退出并返回错误码1
  22. if not exist "%UserDataDir%" (
  23.     exit /b 1
  24. )

  25. :: ===================== 生成当前时间戳(格式:2026-03-28 14-48-54) =====================
  26. for /f "tokens=2 delims==" %%a in ('wmic os get LocalDateTime /value') do set "dt=%%a"
  27. set "timeStamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2% %dt:~8,2%-%dt:~10,2%-%dt:~12,2%"
  28. set "CurrentBackupDir=%BackupRoot%\%timeStamp%"

  29. :: ===================== 创建备份目录 =====================
  30. if not exist "%BackupRoot%" mkdir "%BackupRoot%"
  31. mkdir "%CurrentBackupDir%"

  32. :: ===================== 枚举需要备份的 Default 文件夹 =====================
  33. set "defaultFolders="
  34. if %backupDefaults% equ 1 (
  35.     :: 备份所有 Default 开头的文件夹
  36.     for /d %%d in ("%UserDataDir%\Default*") do (
  37.         set "defaultFolders=!defaultFolders! %%~nxd"
  38.     )
  39. ) else (
  40.     :: 仅备份默认 Default 文件夹
  41.     set "defaultFolders=Default"
  42. )

  43. :: ===================== 执行文件复制备份 =====================
  44. set "copyError=0"
  45. for %%f in (%defaultFolders%) do (
  46.     set "srcDir=%UserDataDir%\%%f"
  47.     set "destDir=%CurrentBackupDir%\%%f"
  48.     if exist "!srcDir!" (
  49.         mkdir "!destDir!" 2>nul
  50.         :: 循环复制备份列表中的文件
  51.         for %%i in (%backupList%) do (
  52.             if exist "!srcDir!\%%i" (
  53.                 copy "!srcDir!\%%i" "!destDir!\%%i" /y >nul 2>&1
  54.                 if errorlevel 1 set "copyError=1"
  55.             )
  56.         )
  57.     )
  58. )

  59. :: ===================== 清理旧备份(保留最新 N 份) =====================
  60. for /f "skip=%backupfiles% delims=" %%d in ('dir "%BackupRoot%" /ad /b /o-n') do (
  61.     rd /s /q "%BackupRoot%\%%d" 2>nul
  62. )

  63. :: ===================== 复制结果校验 =====================
  64. if %copyError% equ 1 (
  65.     echo ==============================================
  66.     echo 备份失败!部分文件复制出错,请检查权限/目录
  67.     echo ==============================================
  68.     pause
  69.     exit /b 1
  70. )

  71. :: 备份成功,静默退出
  72. endlocal
  73. exit /b 0
复制代码
回复

使用道具

12

主题

1万

回帖

2万

积分

超级版主

(^^ゞ

积分
28806
发表于 2026-3-28 18:05:28 | 显示全部楼层
我觉得有点意思,能多个本地备份用户数据的便捷途径。但似乎会有个现实的问题,在浏览器运行过程中,有部分数据文件是被程序锁着而不让读取的。
¯\(°_o)/¯
回复

使用道具 举报

0

主题

8

回帖

42

积分

新手上路

积分
42
发表于 2026-3-30 09:57:00 | 显示全部楼层
我觉得这个可以有。但这个批处理还是要手动去执行。需要一个能定期定时执行的操作。放系统的计划任务里应该也可以。
回复

使用道具 举报

31

主题

1828

回帖

1万

积分

论坛元老

积分
10279
发表于 2026-3-30 10:48:48 | 显示全部楼层
每月备份系统盘表示无压力,回滚个两周一个月的不影响,环境配好了基本不动,只有历史记录的变化,不是太重要
回复

使用道具 举报

匿名  发表于 2026-4-30 19:47:30
https ://www .firefox .com/en-US/firefox/150.0/releasenotes#:~:text=Backing,system
https ://support .mozilla .org/zh-CN/kb/firefox-backup

我怀疑火狐开发人员在偷看百分社区的我们帖子聊天,前脚刚给百分提建议,后脚火狐 150 前几天新版就做好更新了(狗头滑稽.jpg)



说回正题,150 新增的本地备份功能地址    about:preferences#sync     ,不登陆火狐帐号也能用,我点击立即备份后,他导出的是一份 FirefoxBackup_Profiles_20260430-191152.864.html 文件,可以直接当作网页打开,会有简易恢复指引,数据都在 /html 标签结尾,ZIP 以 base64 编码在 html 文件里,我备份完成的大小是 130MB 左右,如果要导出密码等隐私信息,火狐强制要为 ZIP 添加密码,密码要求最低 8 个字符,不能使用火狐帐号的密码

老大也可以参考火狐新出的备份功能,核心信息备份真的在需要时候能 “ 灭火 ” 不至于一无所有



FirefoxBackup_Profiles_20260430-191152.864.html 内容预览

  1. <!DOCTYPE html>
  2. <!-- Version: 1 -->
  3. <html lang="zh-CN"><head>
  4.     <meta charset="UTF-8" />
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6.     <title data-l10n-id="backup-file-title">恢复 Firefox</title>
  7.     <style>
  8.     样式信息省略,太长了
  9.     </style>
  10.   </head>
  11.   <body>
  12.     <img id="logo" role="presentation" src="base64 编码的火狐图片" />
  13.     <h1 data-l10n-id="backup-file-header">Firefox 已准备好恢复</h1>
  14.     <p data-l10n-id="backup-file-intro">找回熟悉的浏览体验,并恢复所有书签、历史记录等数据。<a data-l10n-name="backup-file-support-link" id="support-link" target="_blank" href="***">详细了解</a></p>

  15.     <dl>
  16.       <dt data-l10n-id="backup-file-path-label">备份文件:</dt>
  17.       <dd id="backup-file-path-value"></dd>
  18.       <dt data-l10n-id="backup-file-creation-date-label">创建时间:</dt>
  19.       <dd id="creation-date-value" data-l10n-id="backup-file-creation-date-value" data-l10n-args="{&quot;date&quot;:1777547512864}">2026/4/30 19:11</dd>
  20.       <dt data-l10n-id="backup-file-creation-device-label">设备:</dt>
  21.       <dd id="creation-device-value">本地帐号名称 在 电脑名称 上使用的 Firefox</dd>
  22.       <dt data-l10n-id="backup-file-encryption-state-label">加密:</dt>
  23.       <dd id="encryption-state-value" data-l10n-id="backup-file-encryption-state-value-not-encrypted">否</dd>
  24.     </dl>
  25.     <h2 data-l10n-id="backup-file-how-to-restore-header">恢复方法:</h2>
  26.     <section class="moz-browser">
  27.       <ol>
  28.         <li data-l10n-id="backup-file-moz-browser-restore-step-1">打开应用程序菜单 ☰,前往“设置”&gt;“同步”</li>
  29.         <li data-l10n-id="backup-file-moz-browser-restore-step-2">点击“选择备份文件”并选择此文件</li>
  30.         <li data-l10n-id="backup-file-moz-browser-restore-step-3">按照指引,重新启动 Firefox</li>
  31.       </ol>
  32.     </section>
  33.     <section class="other-browser">
  34.       <ol>
  35.         <li><span data-l10n-id="backup-file-other-browser-restore-step-1">下载并安装 Firefox</span><a id="download-moz-browser" class="button-link" data-l10n-id="backup-file-download-moz-browser-button" href=" 下载地址 ">下载</a></li>
  36.         <li data-l10n-id="backup-file-other-browser-restore-step-2">启动 Firefox,打开应用程序菜单 ☰,前往“设置”&gt;“同步”</li>
  37.         <li data-l10n-id="backup-file-other-browser-restore-step-3">点击“选择备份文件”并选择此文件</li>
  38.         <li data-l10n-id="backup-file-other-browser-restore-step-4">按照指引,重新启动 Firefox</li>
  39.       </ol>
  40.     </section>
  41.   
  42.   <script>
  43.   /**
  44. //@line 15 "$SRCDIR/browser/components/backup/content/archive.js"
  45. */

  46. const UA = navigator.userAgent;
  47. const isMozBrowser = /Firefox/.test(UA);

  48. document.body.toggleAttribute("is-moz-browser", isMozBrowser);

  49. const filePath = decodeURI(document.location.pathname);
  50. const filePathNode = document.getElementById("backup-file-path-value");
  51. if (filePathNode) {
  52.   filePathNode.innerText = filePath;
  53. }

  54.   </script>

  55. </body></html>

  56. <!-- Begin inline MIME --
  57. ------=_Part_unix时间戳_随机字符_随机字符
  58. Content-Type: application/json; charset=utf-8
  59. Content-Disposition: attachment; filename="archive.json"
  60. Content-Length: 484

  61. {"version":2,"encConfig":null,"meta":{"date":"2026-04-30T11:11:52.864Z","appName":"firefox","appVersion":"150.0","buildID":"20260415192539","profileName":"Profiles","deviceName":"电脑名称","machineName":"本地帐号名称 在 电脑名称 上使用的 Firefox","osName":"Windows_NT","osVersion":"10.0","legacyClientID":"UUID","profileGroupID":"UUID","healthTelemetryEnabled":false,"usageTelemetryEnabled":false,"isSelectableProfile":false}}

  62. ------=_Part_unix时间戳_随机字符_随机字符
  63. Content-Type: application/octet-stream
  64. Content-Disposition: attachment; filename="archive.zip"
  65. Content-Transfer-Encoding: base64
  66. Content-Length: 135467541

  67. ....

  68. ------=_Part_unix时间戳_随机字符_随机字符
  69. ---- End inline MIME -->
复制代码
回复

使用道具

5

主题

40

回帖

792

积分

高级会员

积分
792
发表于 2026-5-2 20:06:37 | 显示全部楼层
路过路过, 坐看回复
回复

使用道具 举报

9

主题

130

回帖

1631

积分

金牌会员

积分
1631
发表于 2026-5-2 21:02:58 | 显示全部楼层
我觉得还是把更新周期加快一些更好,把一年更新一次改为半年
回复

使用道具 举报

38

主题

551

回帖

3981

积分

论坛元老

积分
3981
发表于 2026-5-4 11:30:07 | 显示全部楼层
收到              
最新下载地址:
https://static.centbrowser.cn/win_stable/
回复

使用道具 举报

匿名  发表于 2026-6-20 05:42:59
S8F8ry 发表于 2026-3-28 18:05
我觉得有点意思,能多个本地备份用户数据的便捷途径。但似乎会有个现实的问题,在浏览器运行过程中,有部 ...

普通方法确实不行,但卷影复制可行,出错少效果好权限适中稳定执行,找豆包要了份参考案例

:: 1. 创建快照(X替换为实际盘符)
vssadmin create shadow /for=X:

:: 2. 复制文件:原路径 X:\任意目录\User Data → 快照路径 快照设备\任意目录\User Data
copy "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Chrome\User Data\Default\Preferences" "E:\Chrome_Backup\"
或

:: 3. 删除快照
vssadmin delete shadows /for=X: /quiet

以及 PowerShell 脚本

  1. # ========== 仅需修改以下两行配置 ==========
  2. $sourceDir = "D:\Chrome\User Data"  # 你的Chrome User Data目录路径,支持任意盘符
  3. $backupDir = "E:\Chrome_Backup\User Data"  # 备份文件存放目录
  4. # ==========================================

  5. # 1. 自动提取源路径所在的盘符(如 D: / E: / C:)
  6. $driveLetter = Split-Path $sourceDir -Qualifier

  7. # 2. 对目标盘符创建客户端可访问的卷影快照
  8. $shadowResult = (Get-WmiObject -List Win32_ShadowCopy).Create($driveLetter, "ClientAccessible")
  9. $shadowObj = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $shadowResult.ShadowID }
  10. $shadowRoot = $shadowObj.DeviceObject + ""  # 快照根路径

  11. # 3. 自动拼接快照内的源目录完整路径
  12. $relativePath = $sourceDir.Substring($driveLetter.Length + 1)
  13. $shadowSourcePath = Join-Path $shadowRoot $relativePath

  14. # 4. 确保备份目录存在
  15. if (-not (Test-Path $backupDir)) {
  16.     New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
  17. }

  18. # 5. 执行复制(robocopy 稳定性优于xcopy,支持长路径)
  19. # /E:复制所有子目录(含空目录) /COPY:DAT:保留数据、属性、时间戳
  20. # /R:0 /W:0:失败不重试避免卡住 /XF "Lock File":跳过Chrome的锁文件
  21. robocopy $shadowSourcePath $backupDir /E /COPY:DAT /R:0 /W:0 /NP /XF "Lock File"

  22. # 6. 备份完成后自动删除快照,释放磁盘空间
  23. $shadowObj.Delete()

  24. Write-Host "`n备份完成!`n源目录:$sourceDir`n备份至:$backupDir"
复制代码

手动 CMD 需要手动复制快照编号、替换路径,容易出错。以下脚本完全自动化:自动提取源路径盘符、创建快照、拼接路径、执行复制、清理快照,仅需修改顶部两行配置,自动适配任意盘符、任意层级目录。

脚本特点
全场景通用:无论源目录在系统默认的 C:\Users\xxx\AppData\...,还是自定义的 D:\Chrome\User Data、F:\MyData\Chrome\User Data,均可直接使用。
零手动拼接:自动处理盘符提取、路径拼接,原生支持带空格的路径,无需手动加引号。
自动清理:备份完成后立即删除快照,不会残留占用磁盘空间。

关键注意事项
文件系统要求:源文件所在磁盘必须为 NTFS 格式,VSS 不支持 FAT32 /exFAT 分区。
权限要求:CMD 和 PowerShell 都必须以「管理员身份」运行,否则无法创建卷影快照。
快照编号:每次执行 create shadow 都会生成新快照,编号持续递增;手动操作时务必以命令实际输出的设备路径为准,不要直接照搬示例编号。
数据一致性:VSS 快照是时间点一致视图,复制出的 SQLite 数据库、JSON 配置文件均为完整一致状态,不会出现半写入损坏。
回复

使用道具

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|百分浏览器论坛

GMT+8, 2026-10-19 01:35 , Processed in 0.010591 second(s), 5 queries , Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表