跳转到内容
来自 Arch Linux 中文维基

profile-sync-daemon (psd) 是一个小型伪守护进程,旨在于 tmpfs 中管理浏览器配置文件,并定期将其同步回磁盘中。保持 tmpfs 副本和与媒体相关的浏览器配置文件备份之间的同步的过程通过创新地使用 rsync 实现。此外,psd 还具有若干崩溃恢复功能。

psd 的设计目标和优点如下:

  1. 自动化用户体验
  2. 减少硬盘磨损
  3. 提高速度

由于浏览器配置文件、缓存等被迁移到 tmpfs(内存)中,因此与使用浏览器相关的 I/O 操作也会从磁盘重定向到内存,从而减少磁盘磨损,并大幅提升浏览器的速度和可响应性。

注意:
  • 一些浏览器,如 Chrome(及 Chromium)和 Firefox(自 v21 起),将缓存目录与配置文件目录分开存放。profile-sync-daemon 不能用于修改此行为,可以参考 Chromium#临时文件系统中的缓存部分了解 Chromium 的相关内容,并参考 Firefox/在 RAM 中存储配置文章获取解决方法。
  • 默认配置文件 /usr/share/psd/psd.conf 可能会随软件包的更新更改。需要使用 diff 比较用户配置 $XDG_CONFIG_HOME/psd/psd.conf 与其的差异。在 Arch Linux 上,pacman 会通知执行此操作。
  • psd 可能会导致登录变慢,因为需要在登录时将浏览器缓存复制到 RAM 中。

安装

安装 profile-sync-daemon

配置

第一次运行 psd 时,会创建包含所有设置的 $XDG_CONFIG_HOME/psd/psd.conf 配置文件。在使用 psd.service 启动同步前,可以使用 psd 命令来创建此文件。

注意:在 psd 活动时对配置文件做的修改只有在重启 psd.service 服务后才能生效。

以下是可选的环境变量配置:

  • 设置 USE_OVERLAYFS 变量:启用 overlayfs,可提高同步速度并减少内存占用。对 /usr/bin/psd-overlay-helper 拥有 sudo 权限才能使用此选项,且内核必须支持最低版本 22 的 overlayfs。有关详细信息,参阅 #Overlayfs 模式
  • 设置 BROWSERS 数组:需要管理的浏览器。默认管理所有检测到的浏览器。
    • 示例(假设已安装 Chromium、Opera 和 Firefox,但用户只希望将 Chromium 和 Opera 同步到 tmpfs):
BROWSERS=(chromium opera)
  • 设置 USE_BACKUPS 变量:启用/禁用崩溃恢复快照。默认启用。
  • 设置 BACKUP_LIMIT 变量:保留的崩溃恢复快照的数量。

从 psd 的 5.54 版本开始,原生支持 overlayfs,要求 Linux 内核版本至少为 3.18.0。

支持的浏览器

目前,psd 自动检测并管理以下浏览器:

用法

启动/启用 psd.service 用户单元。提供的 resync-timer 每小时将配置文件从 tmpfs 同步回磁盘。resync-timer 会随着 psd.service 自动启动,无需手动启动。

预览(解析)模式

运行 psd parse 以查看 psd 根据 $XDG_CONFIG_HOME/psd/psd.conf 将执行的操作和正在执行的操作。它还会提供一些有用的信息,例如配置文件大小、路径以及是否创建了任何恢复快照。

提示与技巧

缩短同步间隔

psd 提供的同步定时器每小时触发一次。更改同步间隔需要修改 systemd 单元。下面的示例将定时器更改为每十分钟同步一次(请注意,OnUnitActiveSec 需要在重新分配之前手动清除 [1]):

~/.config/systemd/user/psd-resync.timer.d/frequency.conf
[Unit]
Description=Timer for Profile-sync-daemon - 10min

[Timer]
OnUnitActiveSec=
OnUnitActiveSec=10min

更多选项请参阅 systemd.timer(5)

Overlayfs 模式

注意:在 Linux 内核中有多个版本的 overlayfs 可用于生产环境,不同发行版中的 overlayfs 版本可能不同。版本 22 及以下的模块名为“overlayfs”,而更新的版本(23 及以上)的模块名为“overlay”(删去了“fs”)。如果配置使用某一版本,psd 会自动检测内核支持的 overlayfs 版本。

Overlayfs 是一个简单的联合文件系统,自 Linux 内核 3.18.0 版本开始被主线集成。psd 从版本 5.54 开始,可用 overlayfs 减少其 tmpfs 空间占用的内存,并加速同步和取消同步操作。其原理在于 overlay 挂载只写出发生更改的数据,而不是整个配置文件。运行于 overlayfs 模式时,psd 默认模式下的恢复功能仍然有效。通过取消注释 USE_OVERLAYFS="yes" 行并重新启动守护进程,即可启用 overlayfs 模式(配置文件位于 $XDG_CONFIG_HOME/psd/psd.conf)。

自 psd 版本 6.05 起,使用此模式必须具有对 /usr/bin/psd-overlay-helper 无密码提示的 sudo 权限或全局 sudo 权限。以下是添加这些权限所需的 /etc/sudoers 行,请使用 visudo 添加:

<用户名> ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper

请参见前文 #预览(解析)模式中的示例,可显示使用 overlayfs 的系统节省的内存。注意“overlayfs 大小”报告与每个配置文件的总“配置文件大小”报告之间的对比。请注意,这些数字会根据写入配置文件的数据量而变化,但在常见的使用情况下,overlayfs 的大小通常小于配置文件大小。

警告:在 overlayfs 模式下使用 psd(尤其是 psd-overlay-helper)可能导致权限提升。[2][3]

Overlayfs 的工作方式是挂载配置文件的只读基础副本(browser-back-ovfs),并在其上管理新数据。为了避免重新同步到只读文件系统,会使用一个副本。因此,使用 overlayfs 是一种权衡:初始同步时间更快,内存使用更少,但需要占用主目录中的磁盘空间。

为 /run/user/xxxx 分配更多内存以容纳配置文件

控制 /run/user 大小的标准方法是编辑 /etc/systemd/logind.conf 中的 RuntimeDirectorySize 配置(参见 logind.conf(5))。默认情况下,使用物理内存的 10%,但可以安全地增加此值。请记住,tmpfs 只会使用实际占用的空间,这里指定的数字仅为允许的最大值。

快照

通常情况下,浏览器配置文件的“最后有效”备份可能仍然安全地保存在文件系统中。在重启 psd(例如系统重启)时,会检查指向 tmpfs 配置文件副本的符号链接是否有效。如果无效,psd 会在重新定位之前对“最后有效”备份进行快照。这主要是为了完整性检查,以确保 psd 未造成任何损害,任何数据丢失都源于其他因素。

注意:可以通过在 $XDG_CONFIG_HOME/psd/psd.conf 中将 USE_BACKUPS 变量取消注释并设置为 "no",禁用快照/备份功能。

可在与浏览器存放配置文件的目录中找到快照,它将包含与恢复发生时间对应的日期时间戳。例如,Chromium 的快照路径为 ~/.config/chromium-backup-crashrecovery-20130912_153310⸺当然,日期时间后缀会有所不同。

恢复快照的方法:

  • 停止 psd.service 用户单元
  • 确保没有指向 tmpfs 浏览器配置文件目录的符号链接。如果有,说明 psd 可能由于某些原因没有正确停止。
  • 将“坏掉的”配置文件副本移到备份中(不要盲目删除任何文件)。
  • 将快照目录复制到浏览器预期的目录中。

以 Chromium 为例:

$ mv ~/.config/chromium ~/.config/chromium-bad
$ cp -a ~/.config/chromium-backup-crashrecovery-20130912_153310 ~/.config/chromium

重新启动 Chromium,浏览器将使用备份快照。如果一切正常,关闭浏览器并重启 psd。此时,可以安全地删除~/.config/chromium-backup-crashrecovery-20130912_153310

使用清理模式清除所有快照

运行 psd clean 将删除所有积累的恢复快照。在确定要删除这些快照后再运行此命令。

支持

如有评论或疑虑,请在讨论帖中发布。

另见