Anything-sync-daemon
anything-sync-daemon (asd) 是一个微小的伪守护进程,旨在管理用户指定的目录(以下称为同步目标),将它们置于 tmpfs 中,并定期将它们同步回物理磁盘 (HDD/SSD)。这是通过绑定挂载步骤和创新性地使用 rsync 来实现 tmpfs 副本和媒体绑定的备份之间的同步来完成的。此外,asd 还具有多项崩溃恢复功能。
asd 的设计目标和优点是
- 透明的用户体验
- 减少物理驱动器的磨损
- 速度
由于同步目标被重定位到 tmpfs (RAM 磁盘) 中,与系统使用它们相关的 I/O 冲击也被从物理驱动器重定向到 RAM,从而减少了物理驱动器的磨损,并提高了速度和响应速度。RAM 的访问时间约为纳秒级,而物理磁盘的访问时间约为毫秒级。这相差六个数量级,即快 1,000,000 倍。
安装
安装 anything-sync-daemon 软件包。
配置
用户管理的设置在 /etc/asd.conf
中定义,该文件包含在软件包中。
- 至少,在
WHATTOSYNC
数组中定义要由 asd 管理的同步目标。语法如下。 - 可选地,取消注释并在
VOLATILE
变量中定义 tmpfs 的位置。 - 可选地,启用 overlayfs 的使用,以进一步提高同步速度并使用更小的内存占用。请注意,此选项需要您的内核配置为使用 'overlay' 内核模块。有关更多详细信息,请参见 #Overlayfs 模式。
/tmp
的默认值应该可以很好地用于 VOLATILE 设置。如果使用 bleachbit,请勿使用 --clean system.tmp
开关调用它,否则您将从 /tmp
中删除 asd 需要用来跟踪同步状态的关键点文件 (.foo)。另请注意,仅当用户启用 overlayfs 选项时,使用 /dev/shm
的值可能会导致 systemd 的 NAMESPACE 生成问题。示例
WHATTOSYNC=('/var/lib/monitorix' '/srv/http' '/foo/bar')
或
WHATTOSYNC=( '/var/lib/monitorix' '/srv/http' '/foo/bar' )
使用
启动/启用 asd.service
。此外,提供的 resync-timer 将每小时运行一次从 tmpfs 到磁盘的重新同步。resync-timer 与 asd.service
一起自动启动,因此无需手动启动计时器。
预览 (解析) 模式
运行 asd parse
以查看 asd 将根据 /etc/asd.conf
中的条目执行/正在执行的操作。它还将提供有用的信息,例如目录大小、路径以及是否已创建任何恢复快照。
提示和技巧
以更频繁的间隔同步
软件包提供的重新同步计时器每小时触发一次。用户可以选择通过扩展 systemd 单元来重新定义此行为。下面的示例将计时器更改为每十分钟同步一次(请注意,OnUnitActiveSec
需要在重新分配之前清除 [1])
/etc/systemd/system/asd-resync.timer.d/frequency.conf
[Unit] Description=Timer for Anything-sync-daemon - 10min [Timer] OnUnitActiveSec= OnUnitActiveSec=10min
有关其他选项,请参见 systemd.timer(5)。
Overlayfs 模式
Overlayfs 是一个简单的联合文件系统,在 Linux 内核版本 3.18.0 中被主线化。从 asd 版本 5.54 开始,overlayfs 可用于减少 asd 的 tmpfs 空间的内存占用,并加快同步和取消同步操作。其奥妙在于 overlay 挂载只写出已更改的数据,而不是整个同步目标。当在 overlayfs 模式下运行时,asd 在其默认模式下使用的相同恢复功能也处于活动状态。通过取消注释 /etc/asd.conf
中的 USE_OVERLAYFS="yes"
行,然后重启守护进程来启用 Overlayfs 模式。
快照
很可能您的同步目标的“最后良好”备份仍然完好无损地位于您的文件系统中。重新启动 asd(例如在重新启动时)时,会执行检查以查看 asd 是否在某些损坏状态下退出。如果检测到,asd 将在旋转回原位之前快照“最后良好”的备份。请注意,由于 asd 试图减少磁盘使用量,因此它从未真正“复制”目录的完整内容,而只是使用到先前文件的硬链接。并且在 rsync 步骤期间,它会创建新文件,以便先前的硬链接保持不变。因此,在 asd 尝试备份期间尝试修改目录可能会使目录处于某种损坏状态。
USE_BACKUPS
变量设置为 "no"
在 /etc/asd.conf
中完全禁用快照/备份功能。您将在与同步目标相同的目录中找到快照,它将包含一个日期-时间戳,该时间戳对应于进行恢复的时间。例如,/foo/bar
快照将是 /foo/.bar-backup_asd-crashrecovery-20141221_070112.tar.zstd
——当然,日期_时间后缀对您来说会有所不同。
要恢复您的快照
- 停止
asd.service
。 - 确认 asd 创建的目录不存在。如果存在,则 asd 由于其他原因未正确停止。
- 将同步目标的“坏”副本移动到备份(不要盲目删除任何内容)。
- 将快照存档解压到预期的同步目标。
使用 /foo/bar
的示例
$ cd /foo $ mv bar bar-bad $ tar -xvf .bar-backup_asd-crashrecovery-20141221_070112.tar.zstd
使用清理模式清理所有快照
运行 asd clean
将删除所有累积的恢复快照。仅当您确定要删除它们时才运行此命令。
支持
在讨论帖中发布评论或疑虑。