OSXにrsyncでバックアップ

レンタルサーバーで運用しているWEBサイトのコンテンツを、OSXの社内サーバーにバックアップしようという試み。(レンタルサーバーはCORESERVER

問題点

レンタルサーバーで使えるrsyncではOSXのエンコーディングに対応できないのです。

完成形

–iconvでUTF-8-MACが指定できるrsyncの作成。
インストール場所は$HOME/tool/bin。

下準備

OSX側のファイルシステムは「大文字小文字区別」するようにしておくこと!
うっかり区別しないにしているなら、バックアップ用のパーティションを別途作成しておきましょう。

macportsでrsyncを入れておくこと。 最初から入ってるrsyncだとなぜかうまくいかない。

バックアップ用のユーザーを作っておき、ssh用のキーペアを作っておく。作った公開鍵はレンタルサーバーの$HOME/.sshに置く。

ソースコードのダウンロード

rsyncとlibiconvが必要です。ここからの作業はサーバーにSSHして行います。コマンドラインが使えない人は諦めましょう。

rsyncはオフィシャルサイトから最新のもの(ここでは3.0.9)をwgetしときます。
libiconvはappleのサイトからlibiconv-13.2.tar.gzあたりをwgetします。(新しいとコンパイルが大変…)

ダウンロードしたソースコードを$HOME/tool/srcに置いて解凍します。

libiconvのコンパイル

libiconv-13.2/libiconvにcdして、./configure –prefix $HOME/tool しておきます。

その後にいくつかのファイルを編集します。(こちらのサイトから抜粋)

lib/utf8mac.hの

#include <libkern/OSByteOrder.h>

//#include <libkern/OSByteOrder.h>
#include <byteswap.h>
#define OSSwapInt16(x) bswap_16(x)

と修正します。

aclocal.m4の

AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])

AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.9"])

同ファイルもう1カ所

        [AM_AUTOMAKE_VERSION([1.7.5])])

        [AM_AUTOMAKE_VERSION([1.9.6])])

に変えます。(バージョンが違ってたら環境に合わせてください。 automakeのバージョンは automake –version で調べることができます。)

さらに、libiconv直下にam–refreshというファイルを作ります。touchしてください。
ここまでできたらやっとmake install

おわったら $HOME/tool/bin/iconv -l | grep MAC で、「UTF-8-MAC」が出ることを確認。

rsyncのコンパイル

export LDFLAGS=-L$HOME/tool/lib

しておいて、あとは ./configure --prefix=$HOME/toolしてmake installすればおしまい。

実行で気をつけること

--iconv=UTF-8,UTF-8-MAC を付けるのはもちろんのこと、--rsync-path=/opt/local/bin/rsyncを忘れずに。(こちらのサイトで言及)

最終的には以下の様なコマンドになる。(1行で。パスは適宜環境に合わせて書き換え)

$HOME/tool/bin/rsync --rsync-path=/opt/local/bin/rsync
    --iconv=UTF-8,UTF-8-MAC -avz --delete
      -e ssh ~/public_html backup@<サーバー名>:/Volumes/Backup/coreserver

エラーと対処

libiconvのmakeで「No rule to make target `am–refresh‘. Stop.」

「touch am–refresh」しとけ。

rsyncの実行時に「rsync error: syntax or usage error (code 1) at main.c(1318) [server=2.6.9]」(的な)

–rsync-path忘れてる。

コメントは受け付けていません。

TOPへ

このサイトについて

Wardish Labs(ウォーディッシュラボズ)は、
Wardish合同会社のエンジニアがさまざまなサービスや技術についての情報をアウトプットしていくサイトです。

 

執筆者の紹介

Tetsuya Mito

ウォーディッシュの代表社員。
最近の口グセは「どこのカレー食べる?」。

  

Akie Utsumi

ウォーディッシュの社員。
最近の口グセは「猫にかまわれたい」。

  

TOPへ