2007年12月27日木曜日

rsync+sshでのバックアップが途中で止まってしまう

外部サーバーのファイルを毎晩自宅サーバーにrsyncで自動バックアップしてるのですが、引っ越しをして回線が変わってから2分の1くらいの高い確率でバックアップが失敗しておりました。


ssh: connect to host example.com port 22: Connection timed out
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(453) [receiver=2.6.9]


というエラーメッセージを吐いて止まっています。
いろいろ調べてみたところ、rsyncはサイズの大きいファイルのバックアップが苦手なようで、圧縮オプション(-z)をつけているとさらにその確率が高まるんだそうです。

http://mztaro.agora-mc.com/item/117
http://lists.samba.org/archive/rsync/2006-February/014774.html

自分の場合、まさにこのケースにあてはまります。-z使ってるし、一番大きいファイルは200MB弱あります。
解決のためのキーワードが「bwlimit」と「timeout」であることが分かったので、さっそく調べてみる。
rsyncのマニュアルは、


--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--timeout=TIME set I/O timeout in seconds


とりあえず「--bwlimit=8192 --timeout=600」にして実行してみると、、、成功!!
ひとまずこれでしばらく様子を見てみたいと思います。

※2008.01.08追記
その後、正月休み中も毎日自動でバックアップとっていましたが、すべて成功していました。

2007年12月26日水曜日

正規表現の勉強

自分は正規表現が苦手で、よくつまづくことがあります。
こちらのページに「Java、PHP、.NETではじめる正規表現」という、いい感じの資料があったので印刷して電車の中で読みました。これでちょっとはレベルアップしたかな?
http://module.jp/works.html
第1章 正規表現のいろはにほへと - まずは基本を押さえよう(PDF: 169K)
第3章 PHP編 - preg系関数とereg系関数を学ぶ(PDF: 167K)
Appendix - 各言語正規表現対応表(PDF: 74K)
念のためこちらにもファイル置かせていただきます。


索引
※追記
これなんかも役に立ちそうです
すべての漢字を取り出す正規表現

2007年12月20日木曜日

Apacheで、特定URLへアクセスのみ別ログファイルに記録する

httpd.confをこんな感じに。

SetEnvIf Request_URI "^/aiueo/" aiuoe
CustomLog logs/access.log common env=!aiuoe
CustomLog logs/aiuoe.log common env=aiuoe

これでURLに「/aiueo/」を含むアクセスはaiueo.logに記録されるようになります。

2007年12月13日木曜日

PEAR::Pager で Digg っぽいページャを作る

http://cl.pocari.org/2007-12-02-1.html
Pear::Pagerは自分も愛用してますが、デフォルトだと味気ないデザインなので、こういうサンプルがあると助かります。今度使ってみようと思います。

2007年12月5日水曜日

PearのHTTP_REQUESTは便利だ!と改めて思った

とても便利なPearのHTTP_Request。自分もよく使っています。
今回仕事で、とあるウェブサイトのマイページ(https)にログインして、ログイン後のページの内容を取得する、というのを作ったんですが、HTTP_Requestならクッキーの値の取得、さらにクッキー情報の送信までできてしまう。
以前fsockopenを使って同じようなことをやったんですが、HTTP_REQUESTを使うと圧倒的にカンタンに実装できます。
そんなわけで、あらためてHTTP_REQUESTの便利さを思い知ったというわけです。
http://www.ironhearts.com/diary/archives/001397.html
http://www.bnote.net/php/pear/ref_http_request.shtml