Akonadi 和地址薄
这里的资料由 KDE-PIM 开发人员 Tobias Koenig 提供。
一些定义
真实数据(real data)我们指的像是联系人或事件这类数据。这些数据或是存储在「群件服务器(groupware server)」,或是存储在本地文件中。具体存储的位置取决于你使用的资源,比如,个人联系人(Personal Contacts)资源就是把数据存储到 $HOME/.local/share/contacts,同时 VCard File 资源(已经不推荐使用了)则存储数据到 $HOME/.kde/share/apps/kabc/std.vcf。
缓存数据(cached data)则是真实数据的副本,放置在数据库中便于更快速的访问和作为离线缓存。数据库还同时保留着用来管理数据的元数据(meta data),Akonadi需要元数据才能正常工作。
设置数据(configuration data)是设定 Akonadi 服务器和个别资源的数据。服务器的设置数据可以在 $HOME/.config/akonadi 找到,资源的设置数据通常存储在 $HOME/.kde/share/config/akonadi_xyz_resourcerc# (xyz 是资源名而#是其的实例数)。
Akonadi 服务端的配置信息其实就是 $HOME/.config/akonadi 那的一组配置文件(通过改环境变量 $XDG_DATA_HOME 和 $XDG_CONFIG_HOME 可以变更路径的,默认分别是 $HOME/.local/share 和 $HOME/.config)。它的信息包括那些数据源(data sources)和辅助程序(helper programs)是激活被启用的,启用的这些会被Akonadi 的某个服务端进程 (akonadi_control)启动和监控(所以它们崩溃的时候才能自动重启)。KDE 的本地基本路径可用 $KDEHOME 环境变量修改,默认是 $HOME/.kde(有的发行版改了源代码,就可能是 $HOME/.kde4)
参考
kde4-config --path data
每种数据来源处理器(称作 资源)或者辅助程序(称作 代理)都可以有自己的配置信息,当然有些是没的。通常来说 $HOME/.config/akonadi/agentsrc 中每条都有其在 $HOME/.kde/share/config 对应的配置。比如说,如果 [Instances] 字段有条叫 akonadi_ical_resouce_2,那么 KDE 配置目录下面会有个叫做 akonadi_ical_resource_2rc 的文件。
依据数据类型的不同,配置文件的文件名或者说目录名会有一定的规律。常规的路径是 KDE 传统的位置,比如说 $HOME/.kde/share/apps/korganizer/std.ics,新的默认路径是 $HOME/.local/share,比如说 $HOME/.local/share/contacts。
当前的版本中,数据库仅仅是拿来存储结构化信息(比如说某个联系人属于哪个通讯录)。这些是会变的,以后 Akonadi 会用于 email,像是已读/未读这些信息的存储(除非是 IMAP 那样的后端才不需要这样)。
筹备备份
然后现在是该决定备份什么样的数据了。如果你想备份"真实数据(real data)",这东西又得具体看你设定的资源……要是你用的是「群件服务器(groupware server)」,备份这事应该在那边搞定。对于联系人,你需要的通常是 $HOME/.local/share/contacts 那的文件。
Akonadi 托盘图标提供备份和恢复功能。备份的是"缓存数据(cache data)",所以可能没带全你所有的数据!如果你想1:1进行系统拷贝,这功能会很有用,你可以拷贝真实数据和配置的同时复制缓存数据过去,之后便不必再次从源载入数据(比如群件服务器)。
测试你的资源
KRunner 提供 Akonadi Resource Configuration,或是你通过
来访问,从 KDE 4.6 开始,你可以在 找到,你可能会发现已经建立好多个资源。还可能你会看到某个资源带上这样的标签:Address Book - No KDE address book plugin configured yet.
这是旧的兼容性问题(通常是迁移工具引起的)。你应该直接删除之!
std.vcf - Ready
这是 VCard File Resource,每个默认指向 $HOME/.kde/share/apps/kabc/std.vcf。不推荐再用这种方式,因为其没有使用到Akonadi的优势。
个人联系人(Personal Contacts) - Offline
这是你本地联系人指向的优先资源
$HOME/.local/share/contacts
注意就算是你实际在用,还是可能会提示"离线(Offline)"。这是个显示 bug,无视之。
什么时候更多的组件改用 Akonadi啊?
剩下的组件要是迁移到 Akonadi,其所有数据会存储到 ~/.local/share 吗?那样的话备份会简单许多。嗯,联系人和邮件现在已经这样处理了。但我不知道事件/todos 今后的计划,但也存储到那确实有道理。我们会在今后讨论的时候记住这点的!
故障排解
问题: 更新到 4.6,发现联系人清空了。
解决办法: 这是 4.6 新改的-你可以选择只显示特定地址簿或显示全部。在每个地址簿名字前有个复选框,你懂的。