管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || アンテナ || PUT || more≫ ≫omit
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage ||[edit]
category: WikiLab/WalWiki

WikiLab/WalWiki/データ復旧のために - 不本意な編集に備えて。

LastModified : Sun Mar 13 01:34:44 2005
[管理]

不本意な編集に備えて。

Wiki を使う際に、多くの人が心配するのは「不慣れな訪問者や悪意のある訪問者に、不本意な形でデータを編集されること」だと思います。 実際には、滅多に心配するような事態は起こらないのですが、それでもやはり皆無ではありません。

特に、YukiWikiWalWiki はページの差分が「1回の編集」分しか残らないので、不本意な形で編集された後に、もう一度誰かがページの編集を行ってしまうと、不本意な編集があったことに気付かずに過ごしてしまう事があります。

このページでは、WalWiki で可能なデータ復旧のための方法を紹介します。

2004/10/03(Sun)

編集内容をメールで受け取る。

[TOP↑] [管理]

設定で、編集ごとにその内容をメールで受け取ることが出来ます。 設定か所は以下の 2行です。

my $modifier_mail = ''; # Your mail address.
my $modifier_sendmail = '';                                  # If you don't need mail notification.

sendmail のパスはサーバーのサポートページなどを参照してください。

ただし、サーバーによっては sendmail が使えないことがあります。 この場合には、メールで編集内容を受け取ることは出来ません。

削除されたページを diff から復旧する。

[TOP↑] [管理]

WalWiki では、ページを削除された場合にも、diff ディレクトリに削除されたデータが差分として残るので、それを元に復旧することが出来ます。

ページ名が判っている場合には、以下の CGI で [YukiWikiDB encode] を選択してファイル名に変換し、該当のファイルを diff ディレクトリから探してみてください。

また、InterWiki を利用して削除されたページの差分を表示させることもできます。

  1. InterWikiName に [[差分表示 WikiのURL?mycmd=diff&mypage=euc($1)]] のように登録。
  2. 適当なページに [[差分表示:削除されたページ名]] と記述。
  3. 保存、またはプレビューなどから、作成されたリンクを辿る。

お試し:

差分表示:
上の InterWikiBox に「Words/櫻の園」と入れると、以前この Wiki で削除した当該ページの diff が表示されるはずです。

ページ名が不明な場合には、サーバーにある diff ディレクトリをダウンロードし、覚えている内容で検索してみましょう。

カスタマイズ。

[TOP↑] [管理]

以下の方法を利用するには、wiki.cgi を改造する必要があります。

差分履歴。

[TOP↑] [管理]

なお、LinuZau:WalWiki/カスタマイズ/インクリメンタル差分 を取り入れると、一定時間内の同一IPアドレスからの編集を一回の編集とみなし て差分が表示されるようになります。

undo 機能。

[TOP↑] [管理]

削除したページの復旧。

[TOP↑] [管理]

多世代バックアップ。

[TOP↑] [管理]

612 名前: 594 投稿日: 03/06/10 00:08 ID:???

超簡単な多世代バックアップ作ってみました。

&do_write 中の$database{$form{mypage}} = $form{mymsg};の後にでも突っ込みます。

./WalWiki/backup を作っておくと、 ./WalWiki/backup/(wikiname)/(date-time)
というバックアップファイルができます。
編集機能やN世代バックアップなどは必要ないので。
これで勝手に消されなくなったのでひとまず安心。

# 594 add [tiny backup] start
{
    use File::Copy;
    my $wikiname = uc(unpack("H*", $form{mypage}));
    unless (-d "$modifier_dir_data/backup/$wikiname") {
        mkdir "$modifier_dir_data/backup/$wikiname", 0755
        or die "Can't mkdir $modifier_dir_data/backup/$wikiname; $!";
    }
    use Time::localtime;
    my $time = sprintf("%04d%02d%02d-%02d%02d",
        1900+localtime->year(), 1+localtime->mon(), localtime->mday(),
        localtime->hour(), localtime()->min()
    );
    copy("$dataname/$wikiname.txt",
    "$modifier_dir_data/backup/$wikiname/$time.txt");
}
# 594 add [tiny backup] end

外部サイトから編集画面へのリンクを防ぐ。

[TOP↑] [管理]

データ復旧とは関係がありませんが、外部サイトから編集画面へリンクされると、訪問者が不用意に編集してしまう可能性があります。

WalWiki では、初期状態で

my $modifier_robot_exclusion = 1;   # noindex for edit page  # Walrus add [robot exclusion]

という設定になっており、編集画面などに <meta name="robots" content="noindex"> を挿入することで検索エンジンからリンクされるのを防いでいます。

以下は検索エンジンだけでなく、外部サイトから編集画面へのリンクを防ぎたい場合のカスタマイズです。リファラを見て、編集画面ではなく差分ページを表示するようになります。

my $isRefFromOtherSite = 0;

sub init_form {
   $isRefFromOtherSite = 1 if($ENV{'HTTP_REFERER'} and $ENV{'HTTP_REFERER'} !~ /^\Q$modifier_url\E/);

sub do_edit {
   if($isRefFromOtherSite) {
       &do_diff;
       return;
   }

参考。

[TOP↑] [管理]

spam 関連のメモ。

[TOP↑] [管理]
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || PUT