Profile-sync-daemon
profile-sync-daemon (psd) 是一个微型的伪守护进程,旨在管理 tmpfs 中的浏览器配置文件,并定期同步回物理磁盘 (HDD/SSD)。这是通过创新性地使用 rsync 来维护 tmpfs 副本和媒体绑定的浏览器配置文件备份之间的同步来实现的。此外,psd 还具有多种崩溃恢复功能。
psd 的设计目标和优点是
- 透明的用户体验
- 减少物理驱动器的磨损
- 速度
由于配置文件、浏览器缓存等被重定位到 tmpfs (RAM 磁盘) 中,因此与使用浏览器相关的 I/O 也从物理驱动器重定向到 RAM,从而减少了物理驱动器的磨损,并大大提高了浏览器的速度和响应速度。
- 某些浏览器(如 Chrome/Chromium 或 Firefox (v21 起))实际上将其缓存目录单独保存在其配置文件目录之外。修改此行为不在 profile-sync-daemon 的范围之内;建议用户参考 Chromium tweaks#Cache in tmpfs 部分以了解 Chromium,并参考 Firefox on RAM 文章以了解几种解决方法。
- 有时,上游会对默认配置文件
/usr/share/psd/psd.conf
进行更新/更改。用户副本$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.service
后才会应用。- 可以选择启用 overlayfs 的使用,以提高同步速度并使用更小的内存占用。在
USE_OVERLAYFS
变量中执行此操作。用户将需要 sudo 权限才能使用/usr/bin/psd-overlay-helper
,并且内核必须支持 overlayfs 版本 22 或更高版本。有关更多详细信息,请参见 #Overlayfs 模式。 - 可以选择在
BROWSERS
数组中定义要管理的浏览器。如果未定义任何浏览器,则默认值为所有检测到的浏览器。 - 可以选择禁用崩溃恢复快照(不建议)。在
USE_BACKUPS
变量中执行此操作。 - 可以选择定义要保留的崩溃恢复快照的数量。在
BACKUP_LIMIT
变量中执行此操作。
示例:假设已安装 Chromium、Opera 和 Firefox,但只有 Chromium 和 Opera 将同步到 tmpfs,因为用户将 Firefox 保留为备用浏览器,并且很少使用
BROWSERS=(chromium opera)
从 psd 版本 5.54 开始,包含对 overlayfs 的原生支持。此功能至少需要 Linux 内核版本 3.18.0 或更高版本。
支持的浏览器
目前,以下浏览器是自动检测和管理的
- Chromium
- chromium-devAUR
- conkeror-gitAUR
- Epiphany
- falkon
- Firefox(包括稳定版、beta 版和 nightly 版的所有版本)
- google-chromeAUR
- google-chrome-betaAUR
- google-chrome-devAUR
- icecatAUR
- Luakit
- Opera
- Otter Browser
- palemoonAUR
- Qutebrowser
- seamonkeyAUR
- surfAUR
- vivaldi
用法
启动/启用 psd.service
用户单元。此外,提供的 resync-timer 将每小时运行一次从 tmpfs 同步回磁盘的操作。resync-timer 与 psd.service
一起自动启动,因此无需手动启动计时器。
预览(解析)模式
运行 psd parse
以查看 psd 将根据 $XDG_CONFIG_HOME/psd/psd.conf
执行/正在执行的操作。它还将提供有用的信息,例如配置文件大小、路径以及是否已创建任何恢复快照。
技巧和提示
以更频繁的间隔同步
软件包提供的重新同步计时器每小时触发一次。用户可以选择通过扩展 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 模式
Overlayfs 是一个简单的联合文件系统,主线包含在 Linux 内核版本 3.18.0 中。从 psd 版本 5.54 开始,overlayfs 可用于减少 psd 的 tmpfs 空间的内存占用,并加快同步和取消同步操作。神奇之处在于 overlay 挂载仅写出已更改的数据,而不是整个配置文件。psd 在其默认模式下使用的相同恢复功能在 overlayfs 模式下运行时也处于活动状态。通过取消注释 $XDG_CONFIG_HOME/psd/psd.conf
中的 USE_OVERLAYFS="yes"
行,然后重启守护程序来启用 Overlayfs 模式。
自 psd 版本 6.05 起,想要利用此模式的用户必须具有 sudo 权限(无需密码提示)才能访问 /usr/bin/psd-overlay-helper
或全局 sudo 权限。/etc/sudoers
中的以下行将为 用户 提供这些权限。使用 visudo 添加它
username ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper
请参见上面预览模式部分中的示例,该示例显示了使用 overlayfs 的系统,以说明可以实现的内存节省。请注意每个配置文件的“overlayfs size”报告与总“profile size”报告的比较。请注意,这些数字会根据写入配置文件的数据量而变化,但在常见用例中,overlayfs 大小始终小于配置文件大小。
overlayfs 的工作方式是挂载配置文件的只读基本副本 (browser-back-ovfs),并在其之上管理新数据。为了避免重新同步到只读文件系统,使用了副本。因此,使用 overlayfs 是一种权衡:更快的初始同步时间和更少的内存使用量与 home 目录中的磁盘空间之间的权衡。
在 /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
- 当然,date_time 后缀对您来说会有所不同。
要恢复您的快照
- 停止
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
。
使用 clean 模式清理所有快照
运行 psd clean
将删除所有累积的恢复快照。仅当您确定要删除它们时才运行此命令。
支持
在讨论帖中发布评论或疑虑。