共有ディレクトリ作り


0.動機・目的

やりたいこと

某研究室で、論文などを入れておく共有ディレクトリを作成することになった。 いろんな人がいろんなディレクトリをつくって、そこに勝手にいれていく。 いろんな人がいれていくから、 どこに何が入っているかわからないようになってしまう恐れがある。 それでは意味がない。 わけがわからなくなるのを回避するためには、 毎日どんなファイルが追加されているか わかるようにしログをとらなければならない。

サーバにはLinux+Sambaを使うことにする。 幸運なことに、Sambaを使えば、 新しく書き込まれたファイルがわかるようになる。

ということは、ログを基に、 自動的に追加ファイルをリストアップするスクリプトをつくればよい。 このスクリプトを、アクセスの少なくなる明け方に走らせれば、 朝には新しく追加されたファイルがピックアップされているという仕掛けだ。


1.準備

Linux+Sambaのシステムをとにかく作り上げる。 この部分は省略。Vineでも使えば、あっというまにできあがる。

ファイル名まで書き出すようにするためにはlog levelを 2くらいにする必要がある。 levelが大きすぎると、 ハードディスクがパンクするのでやめておいた方がよい。

[global]
    log level = 2
    (あと色々な設定)
という感じにする。

そうすると、

[2000/12/13 14:43:19, 2] smbd/server.c:main(716)
  Changed root to /
[2000/12/13 14:43:19, 2] smbd/reply.c:reply_special(96)
  netbios connect: name1=PENVV            name2=SSP220
[2000/12/13 14:43:19, 1] smbd/service.c:make_connection(521)
  ssp220 (172.16.2.22) connect to service yokeda as user yokeda (uid=500,gid=501) (pid 2810)
[2000/12/13 14:43:27, 2] smbd/open.c:open_file(582)
  yokeda opened file hyouka.pdf read=No write=Yes (numopen=1)
[2000/12/13 14:43:51, 2] locking/locking_shm.c:shm_del_share_mode(355)
  del_share_modes Deleting share mode entry dev=307 ino=32603
[2000/12/13 14:43:51, 2] locking/locking_shm.c:shm_del_share_mode(376)
  del_share_modes num entries = 0, deleting share_mode dev=307 ino=32603
[2000/12/13 14:43:51, 2] smbd/close.c:close_normal_file(165)
  yokeda closed file hyouka.pdf (numopen=0)

青い部分が味噌なので、その部分をperlか何かで見つけられるようにする。 まあ、perlが一番簡単でしょうね。 ポイントは「write=Yes」の部分でしょうか。 (ファイルアクセスの場合は「read=Yes」がポイント)

ということで、簡単なものを作ってみました。→「pickup.pl
単純に 時間・書き込んだ人・ファイル名をピックアップするだけですので、 削除とか移動とかも考えなけりゃいけないかもしれません。


2.発展(更新ファイル表示)

一週間毎に更新されたファイルの一覧を作りましょう。 方針は下の通り。

  1. 1日に1回ログを観察し、ピックアップする。 (アクセス頻度が高い場合、さらに頻度をあげる。)
  2. 1週間に一度、たまったログを集計。

スクリプトの実行はcronで自動化するとして、 そのためのスクリプトを考えよう。

  1. pickup-kai.pl←準備のときのpickup.plの改良。 ログファイルとしてpickup.logとしよう。
  2. weekly-pickup.pl ←pickup-kai.plが吐き出したファイルをhtmlファイルに整形。 当然、logファイルは上と同じもの。
  3. 書き出す毎にログファイルは消すことにしよう。
(雑考:
HTMLファイルを見るには、apacheでも立てるのが一番簡単だろうなあ。 ということは、apache経由でもファイルにアクセスできたらいいかも。
そのためには、 apacheのディレクトリsambaのディレクトリを共通にすればよいのか。 FTPサーバも立てておくと、さらにおもしろそう。)

3.発展2(アクセスランキング)

アクセスランキングとかもおもしろいかも。 ということで、 アクセス数をカウントするスクリプト → ranking.pl
整形は、好きなようにしてください。


Honkusa Keshi kenstarkenstar.org