DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:tips:maintenance

メンテナンス

このページでは、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)

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

遊び場 (playground) の初期化

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/
ja/tips/maintenance.txt · 最終更新: 2009-12-14 14:29 by kazmiya

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki