at posts/single.html

Wiki と荒らし (2)

昨日の続き。 PukiWiki にて、大量に書き換えられたページを元に戻す方法を残しておこう。 更新ごとにバックアップを取っていることが前提。 まぁ、更新ごとじゃなくても、最後にバックアップを取った時点までは戻るか。

では、戻し方を。 まずは、書き換えられたページの一覧を作るところから。 仮に、書き換えられたページには、「荒らし」という単語が含まれるとする。

$ cd public_html/pukiwiki/wiki # wiki データのディレクトリへ移動
$ echo * | xargs grep '荒らし' | decode.rb | sort | uniq > ~/list.txt

xargs を使っているのは、ページの数が多すぎるとシェルで展開できなくなるため。 ここで使っている decode.rb の中身はこんな感じ。

ARGF.each do |line|
  line =~ /^(.*)\.txt/
  page = $1.unpack('H*0').join.upcase
  file = "#{$1}.txt"
  time = File.ctime(file).strftime('%Y/%m/%d/ %H:%M:%S')
  puts "#{page}\t#{file}\t#{time}"
end

これで、書き換えられたページの一覧と、書き換えられた時刻が分かる (サンプル) 。

関連する日記