arclog 3.00 版
Author: 依玛猫
Keywords: 整理, Apache, Syslog, 记录档

正體中文 | 简体中文 | English

:::

# `arclog` 3.00 版

## 最新消息

2007-11-28

  `arclog` 最新版本 3.00 。从 `reslog` 借过来的全新程式码，档名也从 `arclog.pl` 改为 `arclog` 。新的物件导向处理器，可顺利处理各种压缩法及档案格式。安装系统由 GNU `autoconf` 改用 Perl 的 `ExtUtils::MakeMaker` 和 `Module::Build` 。新加上完整的测试套件，协助程式品管。下载 `arclog` 3.00 版。

2002-09-26

  `arclog.pl` 最新版本 2.1.0 。这是 2.1.0 的最终版，加上了 `bzip2` 压缩的支援，用 `gzip` 程式代替 `Compress::Zlib` 压缩，并改用 GNU `autoconf` 安装设定程式。下载 `arclog.pl` 2.1.0 。

2002-09-18

  `arclog.pl` 最新版本 2.1.0dev2 。本版修正了几个说明文件的错误，并把 SourceForge 加进 `arclog.pl` 的下载网址中。你可以把它当做申请 SourceForge 纪念版。原则上，不需要急著升级。下载 `arclog.pl` 2.1.0dev2 。

2002-09-17

  好消息！ `arclog.pl` 已开始架设於 SourceForge 罗！（虽然我几乎还完全搞不清楚要怎么架…摸索中… ^^; ）

## 说明

`arclog` 是记录档每月归档程式，将记录档中，前月的记录按月份压缩归档，以节省硬碟空间，并避免记录档被有心人士破坏。

`arclog` 目前支援 Apache 、 Syslog 、 NTP 、 Apache 1 SSL engine log 及我自己用的括弧 ISO 修正格式五种格式的记录档，与 `gzip` 和 `bzip2` 两种压缩法。

## 注意事项

- 归类记录档很耗时间。为减少占用原记录档的时间， `arclog` 会先把原记录档复制到暂时工作档，视需要把原记录档归零，再慢慢在暂时工作档上作业。不过仍请注意下列事项：

  1. 如果原记录档很大（好几百 MB ），光复制档案就很花时间了。这种情况下，最好先关闭记录程式，等整理完以后，再继续记录，以避免记录错乱。若平常有定期归档，记录档就不会无限制膨胀了。

  2. 若 `arclog` 执行到一半因故中断，会留下残存的暂时工作档。日后 `arclog` 执行时，碰到之前残存的暂时工作档，会停止执行。要先处理掉之前的暂时工作档，才能继续。暂时工作档只是原档的复本，只要改个档名再归档一次，就可以了。

- 没有特别理由，最好不要排序。排序的潜在问题如下：

  1. 记录档很大时，排序会吃掉很多记忆体。所需记忆体依归档后每个月记录笔数而定。新版的 Linux 和 MS-Windows 系统有记忆体耗用保护，会中断吃掉太多记忆体的程式，不过这还是要花好几分钟，这几分钟内系统会完全当掉不动。我不知道别的作业系统有没有记忆体耗用保护。如果你要玩，风险自负。

  2. 所有支援的记录档格式，时间最小单位为秒。同一秒内的记录会先以记录档顺序（若同时归档好几个记录档），再以记录本身出现的次序排序。这样设计尽可能让排序归档后同一秒内的记录次序，和事件真正的发生顺序一致，但也无法完全保证。若同一秒内的事件次序很重要，你要自行小心。

- 归档 Syslog 记录档时，请特别注意： Syslog 记录档没有记年。 `arclog` 用 `Date::Parse` 模组解读时间。无年份时， `Date::Parse` 会把年份设在这个月到去年的下个月之间。例如，若今天是 2001-06-08 ，那年份会设在 2001-06-30 到 2000-07-01 之间。我原则上赞成这样。不过，若你的 Syslog 记录档超过一年整理归档，不要跑 `arclog` ，否则会死得很惨。

- 从标准输入读记录档，请注意下列事项：

  1. 若要读标准输入，就一定要设定归档时，档名的开头，不然不知道怎么归档后要存到哪里去。

  2. 标准输入无法删除、归零或保留部份内容。若要读标准输入，原档保留模式会自动退回成全部保留。一次读入多档时，若其中有标准输入，会一律退回全部保留，以避免混乱。

  3. `ask` 模式的回答也是从标准输入读的。因为标准输入只有一个，所以从标准输入读档时，无法跑 `ask` 模式，会自动退回到 `fail` 模式。

- 我建议安装 `File::MMagic` ，尽量不要用 `file` 程式。 `File::MMagic` 内建的档案类型表好像比 `file` 程式准确。若不是 `gzip` 或 `bzip2` 压缩档， `arclog` 会把视为当成纯文字档。若压缩档被误判为图档， `arclog` 会当成纯文字档，直接读记录，并以错误结束。就算错误也不会弄乱原记录档，不过多少有点麻烦。

## 系统需求

1. Perl 5.8.0 以上。 `arclog` 使用三参数的 `open()` 以复制档案操作，我还不知道怎么改写到更早的版本上执行。若你可以改写到更早的版本上执行，请告诉我。你可以输入 `perl -v` 查询你目前的 Perl 版本。如果你没有 Perl 或需要升级，可以到 Perl 网站下载安装最新版 Perl 。若你是用 MS-Windows ，可以到 ActiveState 公司下载 ActivePerl 安装。

2. 需搭配的 Perl 模组：

   `Date::Parse`

     这是辨识记录时间用的。若你是 ActivePerl 使用者，可以执行 `ppm install Date::Parse` 安装。

   若没有上列 Perl 模组，请到 CPAN 程式库下载安装。

3. 选配的 Perl 模组：

   `File::MMagic`

     这是检查档案类型用的。若没有安装， `arclog` 会找 `file` 程式代替。若还找不到， `arclog` 会改用档尾（副档名）判断档案类型。这时若从标准输入读档， `arclog` 就无法判断了。若你是 ActivePerl 使用者，可以执行 `ppm install File::MMagic` 安装。 MS-Windows 使用者亦可由 GnuWin32 网站下载 `file.exe` 程式。请确认下载后，存档在系统的路径下，档名为 `file.exe` 。

     建议用 `File::MMagic` 。 `file` 程式偶尔会误判。

   `Compress::Zlib`

     这是处理 `gzip` 压缩档用的，只有在处理 `gzip` 压缩档才会用到。若要用时没有安装， `arclog` 会试著改用 `gzip` 程式代替。若还找不到， `arclog` 就无法执行。若你是 ActivePerl 使用者，可以执行 `ppm install Compress::Zlib` 安装。 MS-Windows 使用者亦可由 `gzip` 网站下载 `gzip.exe`。请确认下载后，存档在系统的路径下，档名为 `gzip.exe` 。

   `Compress::Bzip2` 第二版以上

     这是处理 `bzip2` 压缩档用的，只有在处理 `bzip2` 压缩档才会用到。若要 用时没有安装， `arclog` 会试著改用 `bzip2` 程式代替。若还找不到， `arclog` 就无法执行。到我写这一篇说明的时候为止， ActivePerl 的 PPM 模组库里都还没有 `Compress::Bzip2` 。不过 MS-Windows 的使用者还是可以由 `bzip2` 网站 下载 `bzip2.exe` 。请确认下载后，存档在系统的路径下，档名为 `bzip2.exe` 。

   `Term::ReadKey`

     这是显示进度列用的，若没有安装，就不会显示进度列。此外不会有任何问题。进度列可以让你对 `arclog` 的工作进度一目了然。

   若没有上列 Perl 模组，请到 CPAN 程式库下载安装。

## 下载

`arclog` 的官方网站在：

- SourceForge 上的 `arclog` 网站。

- `arclog` SourceForge 专案页。

- `arclog` CPAN 专案页。

- 旅舍依玛 `arclog` 网页

最新版 `arclog` 可由下列位址下载：

- `arclog` SourceForge 下载页。

- `arclog` CPAN 专案页。

- 旅舍依玛 FTP 站。

依玛猫的 PGP 公钥在：

- `arclog` SourceForge 网站上的依玛猫 PGP 公钥。

- 旅舍依玛上的依玛猫 PGP 公钥。

## 安装

若你是由 `arclog.pl` 2.1.1dev4 以前的版本升级，请参阅 `UPGRADE.zh-cn` 档的升级说明。

### 以 `ExtUtils::MakeMaker` 安装

`arclog` 用 Perl 标准的 `ExtUtils::MakeMaker` 安装，程序如下：

>     % perl Makefile.PL
>     % make
>     % make test
>     % make install

在 `make install` 前，请先确认你有在安装目录存档的权限。通常这时候要切换为 `root` ，才能安装存档。

若你是用 MS-Windows 下的 ActivePerl ， `make` 请改用 `nmake` 。 `nmake` 可由微软的 FTP 站下载。

若要安装到其它地方，请设定好 `PREFIX` 。例如，一般使用者，要安装在自己的目录下时：

>     % perl Makefile.PL PREFIX=/home/jessica

要知道更多安装选项的细节，请参阅 `ExtUtils::MakeMaker` 的说明（请执行 `perldoc ExtUtils::MakeMaker` ）。

### 以 `Module::Build` 安装

若你喜欢，也可以用 `Module::Build` 安装，程序如下：

>     % perl Build.PL
>     % ./Build
>     % ./Build test
>     % ./Build install

在 `./Build install` 前，请先确认你有在安装目录存档的权限。通常这时候要切换为 `root` ，才能安装存档。

若要安装到其它地方，请设定好 `--prefix` 。例如，一般使用者，要安装在自己的目录下时：

>     % perl Build.PL --prefix=/home/jessica

要知道更多安装选项的细节，请参阅 `Module::Build` 的说明（请执行 `perldoc Module::Build` ）。

## 命令列参数

    ./arclog [参数] 记录档档名… [归档档名开头]
    ./arclog [-h|-v]

记录档档名

  要整理归档的记录档档名。若要从标准输入读记录档，请设定成 `-` 。可同时指定许多档案。支援 `gzip` 或 `bzip2` 压缩档。

归档档名开头

  归档档名用的开头，归档后的档案会取名叫`开头.yymmdd`，如：`开头.200101` 、`开头.200102` …等。如果没有设定，会用记录档的档名当开头。若你要从标准输入读记录档，就一定要设归档档名开头。这里不能用 `-` （标准输入），因为这里设定的是档名的开头，不是档名。

-c, --compress 压缩法

  设定归档用的压缩法。记录大多都长得很像，压缩掉会省下非常多的空间。（不然干嘛归档？ ^_*’ ）目前支援下列的压缩法：

  g, gzip

    用 `gzip` 压缩。预设是用 `gzip` 压缩。 `arclog` 可以用 `Compress::Zlib` 来代替 `gzip` 压缩，不用呼叫外部程式，比较快比较安全。不过如果你没有装 `Compress::Zlib` ， `arclog` 还是会自己改用 `gzip` 程式压缩。但如果连 `gzip` 程式都没有，却要用到 `gzip` 压缩，就没有办法了，无法执行。

  b, bzip2

    用 `bzip2` 压缩。 `arclog` 可以用 `Compress::Bzip2` 来代替 `bzip2` 压缩，不用呼叫外部程式，比较快比较安全。不过如果你没有装 `Compress::Bzip2` ， `arclog` 还是会自己改用 `bzip2` 程式压缩。但如果连 `bzip2` 程式都没有，却要用到 `bzip2` 压缩，就没有办法了，无法执行。

  n, none

    不要压缩。（你没搞错吧？ :p ）

--nocompress

  归档后不要压缩，效果和 `--compress none` 一样。

-s, --sort

  按记录时间先后（及记录本身顺序）排序。排序很耗记忆体和 CPU ，所以预设是不排序。请参见前面关於排序的注意事项。

--nosort

  不要排序（预设值）。

-o, --override 模式

  如果有同名的旧档，该怎么办。目前有下列模式：

  o, overwrite

    盖掉旧档。旧档的记录会被删掉，请多加小心。若你的记录档是主记录档，有最完整的记录，你可以用 `overwrite` 。

  a, append

    和旧档加在一起。这有可能会演变成大混乱，请多加小心。若你想把两份不同时间的记录档加在一起，你可以用 `append` 。

  i, ignore

    略过所有该月的记录。这有可能造成部份记录流失，请多加小心。若你只要补充没有归档的月份，你可以用 `ignore` 。

  f, fail

    结束程式，以免不小心破坏旧档。若你要用 `crontab` 之类的程式，全自动化执行，最好这样，以免破坏资料。因此，若标准输入不是连到键盘上，预设是 `fail` 。

  ask

    问你该怎么办。若你是手动执行，这样最方便。因此，若标准输入是连到键盘上，预设是 `ask` 。答案是从标准输入读的。因为标准输入只有一个，若你要从标准输入读记录档，不能跑 `ask` 模式，会自动退回 `fail` 模式。还有，如果从标准输入读不到东西，像 `crontab` 里标准输入被关掉了，也会自动退回 `fail` 模式。

-k, --keep 模式

  原记录档要怎么处理。目前有下列模式：

  a, all

    完全保留原档。

  r, restart

    归档后，原记录档归零。

  d, delete

    归档后，删除原记录档。

  t, this-month

    将之前月份的记录归档，保留这个月的记录，留待下个月归档。这是给 `crontab` 每月归档用的。因此，预设是 `this-month` 。

-d, --debug

  显示详细的执行过程。

-q, --quiet

  没事不要吵。 :p

-h, --help

  显示程式说明。

-v, --version

  显示程式版本。

## 版权声明

版权所有 © 2001-2007 依玛猫。

本程式是自由软体，您可以遵照自由软体基金会 (Free Software Foundation) 出版的 GNU 通用公共许可证条款 (GNU General Public License) 第三版来修改和重新发布这一程式，或者自由选择使用任何更新的版本。

发布这一程式的目的是希望它有用，但没有任何担保。甚至没有适合特定目的而隐含的担保。更详细的情况请参阅 GNU 通用公共许可证。

您应该已经和程式一起收到一份 GNU 通用公共许可证的副本。如果还没有，参阅`<http://www.gnu.org/licenses/>`。

## 版本纪录

请阅读 `Changes` 档，查看程式的演变、新增的功能和修补的错误。

## 支援协助

`arclog` 网站架在 SourceForge 、 CPAN 与 旅舍依玛。索取最新资讯，请驾临：

- SourceForge 上的 `arclog` 网站。

- `arclog` SourceForge 专案页。

- `arclog` CPAN 专案页。

- 旅舍依玛 `arclog` 网页。

在 SourceForge 上有一个 `arclog` 的邮件通讯 。使用上的问题、建议或错误回报，请提到通讯上讨论。它是 Mailman 的邮件通讯。若要加入，请到 `arclog` 邮件通讯的网页 。你也可以写信到 E-mail 指令信箱，标题填上 `help` ，索取 E-mail 指令说明。