このページでは、DokuWiki に必要な日々のメンテナンスのいくつかを自動化するためのヒントを示します。
スパム対策ブラックリストを最新に保つための cron ジョブの設定方法については、ブラックリストを参照してください。
高負荷の DokuWiki では、いくつかのファイル削除処理を設定しておくことをおすすめします。以下に示すスクリプトは処理の一例となります。このスクリプトでは 30 日以上経過したすべてのリビジョンを屋根裏部屋 (attic) から削除し、古くなったロックファイルや空のディレクトリについても削除します。
#!/bin/sh # DokuWiki のインストールパスを設定 DOKUWIKI=/path/to/your/wiki # 30 日以上経過したファイルを屋根裏部屋から削除 find $DOKUWIKI/data/attic/ -type f -mtime +30 -exec rm -f {} \; # 古くなったロックファイルを削除 find $DOKUWIKI/data/locks/ -name '*.lock' -type f -mtime +1 -exec rm -f {} \; # 空のディレクトリを削除 find $DOKUWIKI/data/pages/ -depth -type d -empty -exec rmdir {} \;
これを自動的に実行するには、cron ジョブを設定します。以下の例では、毎晩深夜 00:05 にスクリプトを実行します。
5 0 * * * /full/path/to/cleanup.sh
必ずすべてが正しく設定できていることを確認してください。間違ったファイルを消したくはない、ですよね?
以下に示すシェルスクリプトは、複数の DokuWiki をインストールしている環境で重宝します。このスクリプトは、-print0
オプション付きの find コマンドと xargs コマンドの使用方法も示しています。
#!/bin/sh cleanup() { # $1 ... Wiki のデータディレクトリのフルパス # $2 ... 古いファイルが削除されるまでの保持日数 # $2 日以上経過したファイルを屋根裏部屋から削除 find "$1"/attic/ -type f -mtime +$2 -print0 | xargs -0r rm -f # 古くなった (2 日以上経過した) ロックファイルを削除 find "$1"/locks/ -name '*.lock' -type f -mtime +2 -print0 | xargs -0r rm -f # 空のディレクトリを削除 find "$1"/pages/ -depth -type d -empty -print0 | xargs -0r rmdir } # インストールした Wiki の掃除 (データディレクトリへのパス、日数) # 利用例: cleanup /home/user1/htdocs/doku/data 256 cleanup /home/user2/htdocs/mywiki/data 180 cleanup /var/www/superwiki/data 180
Windows システムで古いファイルを掃除するためのスクリプトとして、waRmZip があります。このソフトは SourceForge のページからダウンロードできます。このスクリプトを実行するバッチファイルを書いて、毎日実行するようにスケジューリングしてみましょう。なお、人が言うように、『必ずすべてが正しく設定できていることを確認してください』です。
上記の waRmZip
の利用提案を受けて、以下のバッチファイルを書いてみました。おそらく役に立つと思います。
私が気に入っている Windows での定期実行方法は、PyCron を使う方法です。
@echo off set waRmZip="c:\Program Files\waRmZip\waRmZip.wsf" set wikiHome="c:\path\to\htdocs\wiki\data" rem 屋根裏部屋内で 30 日以上経過したファイルをアーカイブディレクトリに移動 %waRmZip% %wikiHome%\attic /ma:30 /md:%wikiHome%_archive\attic /r /q rem オプション: 30 日以上経過したファイルを屋根裏部屋から削除 rem %waRmZip% %wikiHome%\attic /da:30 /dc /r /q rem 屋根裏部屋内の空のディレクトリを削除。waRmZip で /df オプションを rem 利用する場合は /da オプションを設定する必要があります。ファイルを rem 削除しないように /fo:*.zzz というフィルタを掛けています。 %waRmZip% %wikiHome%\attic /r /da:31 /df /fo:*.zzz /q rem 古くなったロックファイルを削除 %waRmZip% %wikiHome%\locks /da:1 /fo:*.lock /r /q rem 空のディレクトリを削除 %waRmZip% %wikiHome%\pages /da:365 /df /fo:*.zzz /r /q
Wiki の遊び場 (playground) とその他のページをきれいにしておくには、遊び場とその他のページを元の内容に復元する cron ジョブを 30 分間隔で実行します。
例: 遊び場を 30 分ごとに復元
0,30 * * * * cp -rpf /path/to/savedwiki/data/pages/playground/playground.txt /path/to/dokuwiki/data/pages/playground/
例: “wiki” 名前空間内のすべてのページを 30 分ごとに復元
0,30 * * * * cp -rpf /path/to/savedwiki/data/pages/wiki/ /path/to/dokuwiki/data/pages/wiki/