DokuWiki.biz

オープンソースのウィキソフトウェア「DokuWiki」の設定、テンプレートカスタマイズ、プラグイン開発などのメモ書き。

ユーザ用ツール

サイト用ツール


maintenance:delete

不要ファイル・古いファイルの削除とPlaygroundの初期化

このページでは、以前のリビジョンやロックファイル、空のディレクトリなどの不要ファイル・古いファイルの削除とPlayground(遊び場)の初期化を自動実行する方法について説明する。

DokuWiki内に溜まっていくゴミを削除し、ユーザーに編集された練習用のページを元通りに復元する処理を自動実行させておけば、管理が楽になる。

不要ファイル・古いファイルの削除

DokuWikiのデータディレクトリ内は、それぞれ以下のものが保存されるようになっているようだ。

ディレクトリ 概要
data/attic
data/media_attic
以前のリビジョン(屋根裏部屋)
data/cache キャッシュファイル
data/index 検索インデックス
data/locks ロックファイル
data/media メディアファイル
data/meta
data/media_meta
メタデータ
data/pages ページファイル

DokuWikiは、ページ編集した履歴を以前のリビジョンとして残していく。また、ページ編集中に他のユーザーが編集を行えないように排他制御のためのロックファイルを作成する。これらのファイルが古いファイルとして残ってしまう。

また、ページの削除や名前空間の移動によって、空のフォルダが残ってしまうが、これは不要である。

これらの不要ファイル・古いファイルを以下のシェルスクリプトで自動削除する。最終行でdataディレクトリのパスと、保存日数を指定し、Cronで自動実行させればよい。以前のリビジョン(data/atticdata/media_attic)を削除したくない場合は、1つ目の処理の箇所を削除しておくとよい。

#!/bin/bash
 
function cleanup()
{
    local data_path="$1"        # full path to data directory of wiki
    local retention_days="$2"   # number of days after which old files are to be removed
 
    # purge files older than ${retention_days} days from attic and media_attic (old revisions)
    find "${data_path}"/{media_,}attic/ -type f -mtime +${retention_days} -delete
 
    # remove stale lock files (files which are 1-2 days old)
    find "${data_path}"/locks/ -name '*.lock' -type f -mtime +1 -delete
 
    # remove empty directories
    find "${data_path}"/{attic,cache,index,locks,media,media_attic,media_meta,meta,pages,tmp}/ \
        -mindepth 1 -type d -empty -delete
 
    # remove files older than ${retention_days} days from the cache
    find "${data_path}"/cache/?/ -type f -mtime +${retention_days} -delete
}
 
# cleanup DokuWiki installations (path to datadir, number of days)
 
cleanup /home/<user>/htdocs/dokuwiki/data 180

Playground(遊び場)の初期化

DokuWikiは、Playground(遊び場)という練習用の誰でも編集することができるページを用意している。これを定期的に初期化しないと、誰かが編集したままですっと残ってしまう。

初期化するには、どこか別のディレクトリに元のファイルを置いておき、そのファイルを差し替えるコマンドをCronで自動実行すればよい。

cp -pf /home/<user>/savedwiki/data/pages/playground/playground.txt /path/to/dokuwiki/data/pages/playground/

CAPTCHAプラグインを使用している場合、この処理だけでは問題が起きてしまうので、以下のコマンドも合わせて自動実行する。これは、Playgroundページのメタデータを削除している。

rm -f /home/<user>/dokuwiki/data/meta/playground/playground.*

参考ページ

maintenance/delete.txt · 最終更新: 2018/08/31 10:30:47 by admin