DokuWikiのゴミファイル削除とPlayground初期化を自動実行する方法

DokuWiki DokuWiki
この記事は約5分で読めます。

※当ブログではアフィリエイト広告を利用しています。

PHPベースのオープンソースのウィキソフトウェア DokuWikiのゴミファイル削除とPlayground初期化を自動実行する方法について解説します。

DokuWikiを使用していると、以前のリビジョンやロックファイル、空のディレクトリなどの不要ファイル・古いファイルが溜まり続けていきます。

また、Playground(練習用ページ)もユーザーに編集されたら内容がそのまま残ってしまいます。

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

なお、今回のバージョンは以下の通りです。

  • DokuWiki 2018-04-22a “Greebo”

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

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

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

DokuWikiは、ページ編集した履歴を以前のリビジョンとして残していきます。

また、ページ編集中に他のユーザーが編集を行えないように排他制御のためのロックファイルを作成します。

これらのファイルが古いファイルとして残ってしまいます。

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

これらの不要ファイル・古いファイルを以下のシェルスクリプトで自動削除します。

#!/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

最終行でdataディレクトリのパスと、保存日数を指定し、

sh cleanup.sh

のコマンドをCronで自動実行させればOKです。

以前のリビジョン(data/attic、data/media_attic)を削除したくない場合は、1つ目の処理の箇所を削除しておきます。

DokuWikiのPlayground(練習用ページ)の初期化

DokuWikiは、Playground(練習用ページ)という練習用の誰でも編集することができるページを用意しています。

これを定期的に初期化しないと、誰かが編集したままの内容がずっと残ってしまいます。

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

cp -pf /home/[user]/savedwiki/data/pages/playground/playground.txt /home/[user]/dokuwiki/data/pages/playground/

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

rm -f /home/[user]/dokuwiki/data/meta/playground/playground.*

これは、Playgroundページのメタデータを削除しています。

最後に

今回は、DokuWikiのゴミファイル削除とPlayground初期化を自動実行する方法について解説しました。

DokuWiki内に溜まっていく以前のリビジョン・ロックファイル・空のディレクトリとPlayground(練習用ページ)の初期化を自動実行して、管理を楽にしましょう。

DokuWikiの使い方については、こちらの記事にまとめています。

コメント

タイトルとURLをコピーしました