FLYING

/* TODO: 気の利いた説明を書く */

pukiwikiのdumpを保存するスクリプト

crontabとかで定期実行する用。

#!/usr/bin/ruby
# -*- coding: utf-8 -*-

require 'net/http'
require 'uri'

DOMAIN = 'www.foobar.com'
PATH = '/pukiwiki/index.php'
ADMIN_PASSWORD = 'PUKIWIKI_PASSWORD'
BASIC_USER = 'BASIC_AUTH_USER'
BASIC_PASSWORD = 'BASIC_AUTH_PASSWORD'
PREFIX = 'pukiwiki_'
POSTFIX = '.tar.gz'

begin
	#get params
	params = []
	query = {
		"encode_hint" => "",
		"cmd" => "dump",
		"page" => "トップページ",
		"act" => "dump",
		"pcmd" => "tgz",
		"bk_wiki" => "true",
		"bk_attach" => "true",
		"bk_backup" => "true",
		"pass" => ADMIN_PASSWORD,
		"ok" => "OK",
	}
	query.each{|k, q|
		params << URI.encode(k) + "=" + URI.encode(q)
	}
	
	#get archive
	archive = nil
	Net::HTTP.version_1_2
	req = Net::HTTP::Post.new(PATH)
	req.basic_auth(BASIC_USER, BASIC_PASSWORD)
	req.body = params.join('&')
	http = Net::HTTP.start(DOMAIN, 80) {|http|
		res = http.request(req)
		archive = res.body
	}
	
	#write archive
	date = Time.now.strftime("%Y%m%d%H%M%S")
	File.open(PREFIX + date + POSTFIX, "wb") {|f|
		f.write(archive)
	}
rescue => e
	puts e
end

Basic認証に対応してます。必要なければ適当にコメントアウトするよろし。
“encode_hint=ぷ”ってなんなんだろ……文字化け対策?