Calendar Server 包括“删除日志”数据库 (ics50deletelog.db),该数据库用来存储已删除的事件和待办事件(任务)。
在早期版本中,Calendar Server 没有提供维护已删除事件和任务的数据库。用户不得不通过保存事件或待办事件(任务)的唯一标识符 (uid) 或周期标识符 (rid) 来确定已删除的组件。这种局限性直接影响了使用 WCAP 命令生成客户端用户界面 (UI) 的安装。为解决此局限性,创建了“删除日志”数据库。
本章介绍了以下内容:
在 csdb 目录下除了创建其他 Calendar Server 数据库文件,Calendar Server 还将自动创建“删除日志”数据库 (ics50deletelog.db)。Calendar Server 按如下方式在“删除日志”数据库中写入事件和待办事件:
非重复性事件和待办事件
删除非重复性事件或待办事件后,Calendar Server 将从“事件”数据库 (ics50events.db) 或“待办事件”数据库 (ics50todos.db) 中将其删除,然后将其写入“删除日志”数据库 (ics50deletelog.db)。
重复性事件和待办事件
删除重复性事件或任务的单个实例后,Calendar Server 将把每个这样的实例写入“删除日志”数据库 (ics50deletelog.db)。
重复性事件或待办事件的所有实例被删除后,Calendar Server 将从事件或待办事件数据库中删除主组件,然后将其写入“删除日志”数据库。“删除日志”数据库中的主组件将包含以下重复性参数:rrules、rdates、exrules 和 exdates。
要从“删除日志”数据库返回条目,请使用 WCAP 命令 fetch_deletedcomponents(不管是在扩展模式还是在压缩模式下):
扩展模式 (recurring = 0)
如果 recurring 参数为 0,则 fetch_deletedcomponents 命令将返回符合条件的重复性事件的所有实例,但不会返回重复性事件的主组件。
压缩模式 (recurring = 1)
如果 recurring 参数为 1,则 fetch_deletedcomponents 命令将返回非重复性事件和所有重复性事件的主组件,但不会返回单个重复性事件。
如果删除了重复性链中的所有实例,则主组件将返回 dtstart、dtend、rrules、rdates、exrules、exdates 和 uid 参数。
另外,fetch_deletedcomponents 命令不返回与已删除重复实例关联但仍处于活动状态的主组件。要返回活动的主组件,请使用 WCAP 命令 fetchcomponents_by_lasmod。fetch_deletedcomponents 命令应该与 fetchcomponents_by_lasmod 命令一起使用。
有关 WCAP 命令的更多信息,请参见《Sun Java System Calendar Server 6 2005Q4 Developer’s Guide》。
Calendar Server 提供了自动清理“删除日志”数据库和手动清理“删除日志”数据库。
如果需要,可以让 Calendar Server 自动清理“删除日志”数据库中的条目。
下表介绍了 ics.conf 文件中控制自动清理的参数。
表 18–1 自动清理“删除日志”数据库的配置参数
参数 |
说明 |
---|---|
启用 ("yes") 或禁用 ("no") 自动清理“删除日志”数据库条目 (ics50deletelog.db) 功能。 默认值为 "no"。 |
|
指定自动清理“删除日志”数据库 (ics50deletelog.db) 中条目的时间间隔(以秒为单位)。 默认值为 60 秒。 |
|
指定清理“删除日志”数据库 (ics50deletelog.db) 中条目前的时间(以秒为单位)。 默认值为 86400 秒(1 天)。 |
例如,要使 Calendar Server 每五分钟(300 秒)自动清理一次 2 天(172800 秒)前生成的“删除日志”数据库条目,请按如下所示设置自动清理“删除日志”数据库中所述参数:
service.admin.purge.deletelog="yes" caldb.berkeleydb.purge.deletelog.interval=600 caldb.berkeleydb.purge.deletelog.beforetime=172800
设置这些参数后,重新启动 Calendar Server 以使新值生效。
要手动清理“删除日志”数据库 (ics50deletelog.db) 中的条目,请使用如下 cspurge 实用程序:
cspurge -e endtime -s starttime
其中,endtime 和 starttime 指定以祖鲁时间(也称为 GMT 或 UTC 时间)表示的开始时间和结束时间。
要运行 cspurge,必须以运行 Calendar Server 的用户和组身份登录(默认值为 icsuser 和 icsgroup)或以 root 用户身份登录。
例如,可使用以下命令清理自 2003 年 7 月 1 日到 2003 年 7 月 31 日之间的条目:
cspurge -e 20030731T235959Z -s 20030701T120000Z
有关更多信息,请参见cspurge。
下表列出了可以针对“删除日志”数据库使用的 (ics50deletelog.db) Calendar Server 实用程序:
表 18–2 支持“删除日志”数据库的实用程序
实用程序 |
说明 |
---|---|
cspurge |
允许手动清理“删除日志”数据库中的条目。 |
csbackup and csrestore |
支持“删除日志”数据库的备份和恢复。 |
csstats |
报告“删除日志”数据库的统计信息。 |
csdb |
支持对“删除日志”数据库执行重建、恢复和检查操作。 |
cscomponents |
列出(只读)“删除日志”数据库中的条目数。 |
有关更多信息(包括这些实用程序的语法),请参见附录 D,Calendar Server 命令行实用程序参考。