cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

1. 始めに

同期が必要な場面って結構ある。ローカルのディレクトリ間の同期はもちろん、特にインターネット越しの同期が必要になることって結構ある。

そんなときには決まってrsyncの出番だ。ファイルの変更を検知し、よしなに同期してくれる。そんな頼もしいrsync。枯れたソフトウェアなのでホスティングを借りたときにftpだけじゃなくてsshとrsyncが付いてきたりもする。すでに広まっているからすごく便利。

で、さて、そんな便利なrsyncなんだけれどcronなどで定期的、自動的にrsyncを実行するときにはチョットした問題があったりする。

その問題とは二点。一つはパスワード無しで認証を通す必要があること。もう一つはフィンガープリントと呼ばれるsshのホストの正当性を確かめる確認が出ること、だ。

この問題はどちらも、プログラムやcronなどプロンプト(よろしいですか?[y/n]的なアレ)を処理できない端末でrsyncを利用する際に解決しなければいけない問題。

前者のパスワード無しで認証を通すためにはsshの公開鍵認証を利用する。コレに関しては文献がいろいろとあるので参照されたし。

rsyncとsshで別のマシンにバックアップ

rsync over ssh を使ってバックアップ

さて、今回は二つ目の問題点、フィンガープリントのプロンプトを越えるためのオプションについて考える。環境としてsshクライアントとしてOpenSSHを想定している。他だとうごかないかも。

続きを読む cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

wordpressで良くわかんないエラーが多発してる

wordpressで良くわかんないエラーが多発してる。下記のようなエラーがめっちゃでてくる。

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 1 in /www/public_html/wp-includes/class-wp.php on line 201
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 1 in /www/public_html/wp-includes/class-wp.php on line 202

パーマリンクを変更したせいだと思う。

この件をフォーラムで先に質問しようとしたけどアカウントがログインできない&パスワード復元もできないので(´・ω・`)してた。

今回のwordpressではパーマリンクにハテナをくっつけた、デフォルトっぽいlink structureにしてたんだけど、恐らくそのハテナがよろしくない様子。

ググったけど解決方法わからんのでさっくり回避するコード書いた。なのでメモ。対象ファイルはwp-includes/class-wp.php

--- class-wp.php        2012-07-20 13:46:01.353824749 +0900
+++ class-wp.php~       2012-07-20 13:19:49.000000000 +0900
@@ -194,9 +194,6 @@
}
} else if ( $req_uri != 'wp-app.php' ) {
foreach ( (array) $rewrite as $match => $query ) {
-                    if ($match[0] === '?') {
-                        $match = '\\'.$match;
-                    }
// If the requesting file is the anchor of the match, prepend it to the path info.
if ( ! empty($req_uri) && strpos($match, $req_uri) === 0 && $req_uri != $request )
$request_match = $req_uri . '/' . $request;

で、ええと、コレあまりよろしくないパッチなのでコレを本運用はしないように。

display_errorsをfalseにしておけば出ないエラーなので本運用ではそのようにして運用すること。