1. MAKIZOU.COM
  2. webシステム開発・運用・保守

LinuxサーバーからMac OS Xへrsyncでバックアップ

add to hatenahatena.comment(1)add to del.icio.us(0)add to livedoor.clip(0)add to Yahoo!Bookmark(1)Total: 2

Mac OS X Leopard にシステムや取り替えのきかない重要なファイルを別のハードディスクやネットワークボリュームに自動的にバックアップできる Time Machine が標準実装されました。

Time Machineのおかげで、Macのデータは問題が起きてもバックアップ時点に復旧出来る環境が手軽に手に入りました。

ふと、このブログを運営しているレンタルサーバーはバックアップが出来ていない事に思い当たりました。

HDDは標準でRAIDなのですが、バックアップ領域が毎月1GBで1,000円で高い…ので手が出せない。

さいわい更新頻度は低いので、定期的に Mac OS X に Linuxサーバー のファイルをコピーするだけで事が足ります。

そこで…Linuxサーバー から Mac OS X バックアップする環境を整えたいと思います。

なお、サーバーは固定IPアドレスですが、ローカルの Mac OS X は固定IPではないので、Mac OS Xからサーバーにバックアップするファイルを取得する形にします。

これより、その環境構築した際のメモします。

操作:サーバー(Linux)側

一時的にrootでもSSH接続を出来る様にします。

# vi /etc/ssh/sshd_config

PermitRootLogin no
	↓
PermitRootLogin yes

操作:Macintosh(OS X)側

パスワードを使用しないでログインするためDSA認証の鍵を作成
$ cd ~/
$ ssh-keygen -t dsa

※出力するファイル名、パスフレーズの入力を求められますが
何も入力せずに全てEnteyキーを押下して下さい。

Generating public/private dsa key pair.
Enter file in which to save the key (/Users/makizou/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/makizou/.ssh/id_dsa.
Your public key has been saved in /Users/makizou/.ssh/id_dsa.pub.
The key fingerprint is:
f0:0a:80:e0:73:25:23:e5:02:0e:1d:65:c8:8d:3a:a4 jun@iMac.local
The key's randomart image is:
+--[ DSA 1024]----+
|++oXo.           |
|*oB.=            |
|+*.o  .          |
|E +.   o         |
| .  .   S        |
|     . .         |
|      .          |
|                 |
|                 |
+-----------------+

Macintoshからサーバーへ公開鍵をコピー

$ scp .ssh/id_dsa.pub root@192.168.1.100:
root@192.168.1.100's password:
rsync.pub              100%  604     0.6KB/s   00:00

操作:サーバー(Linux)側

ホームディレクトリ直下に .ssh ディレクトリをパーミッション 700 で作成
# mkdir -m 700 .ssh

Macintoshからコピーしてきた公開鍵を認証用ファイルに登録し、パーミッションを 600 にする。
# mv id_dsa.pub .ssh/authorized_keys2
# chmod 600 .ssh/authorized_keys2

■操作:Macintosh(OS X)側

接続テスト
$ ssh root@192.168.1.100

パスワードが要求されず接続されればテストは成功です

操作:サーバー(Linux)側

「root の ssh ログインでは公開鍵に指定したコマンドライン 実行のみ許す」設定
# vi /etc/ssh/sshd_config

PermitRootLogin yes
	↓
#PermitRootLogin yes
PermitRootLogin forced-commands-only

実行コマンドを限定した接続のテスト
# vi /root/.ssh/authorized_keys2
先頭に以下を追加

command=”/bin/ls”

操作:Macintosh(OS X)側
接続テスト
$ ssh root@192.168.1.100

指定通り /bin/ls が実行されて、すぐに接続が切断されればテストは成功です

公開鍵に指定すべきコマンドラインを得る
$ rsync -vv -az -e ssh root@192.168.1.100:/root/ /Users/makizou/Sites/192.168.1.100/

opening connection using ssh -l root 192.168.1.100 rsync –server –sender -vvlogDtprz . /root/
protocol version mismatch — is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-37.3/rsync/compat.c(61) [sender=2.6.9]

この opening connection using ssh … の後にある rsync から始まる部分に注目します。
rsync –server –sender -vvlogDtprz . /root/ です。
ここからオプション -vv を取り除いたものを、リモートの /root/.ssh/authorized_keys に指定します。

操作:サーバー(Linux)側

# vi /root/.ssh/authorized_keys2
先頭の以下変更

command="/bin/ls"
	↓
command="rsync --server --sender -logDtprz . /root/"

操作:Macintosh(OS X)側

$ rsync -vv -az -e ssh root@192.168.1.100:/root/ /Users/makizou/Sites/192.168.1.100

マックらしくアイコンのダブルクリックで、ターミナルを起動して、シェルスクリプトの実行を始める様にします。

シェルスクリプトを記述したファイルを作成します。

#!/bin/sh

rsync -vv -az -e ssh root@192.168.1.100:/root/ /Users/makizou/Sites/192.168.1.100

このファイルをコマンド拡張子 *.command で保存します。
例:ShellScript.command

同ファイルの情報を開いて、ホストアプリケーションを設定します。
「このアプリケーションで開く:」タグで、「ターミナル.app」を選択します。

同ファイルのパーミッションを設定します。
ターミナルを起動して、ファイルのモードを実行権を与えるように変更します。
$ chmod 755 file名

実行
同ファイルをダブルクリックすると、自動的にターミナルが起動して、シェルスクリプトを実行します

〜・〜・〜・〜・〜・〜・〜・〜・〜・〜

Mac OS X のTime Machineが定期的に差分だけバックアップしてくれるんだけど、たまにエラーになるんだよな…

この記事は参考になりましたか?
1つ星2つ星3つ星4つ星5つ星
Loading ... Loading ...
日付2010年02月09日
カテゴリwebシステム開発・運用・保守
ページビュー283PV
add to hatenahatena.comment(1)add to del.icio.us(0)add to livedoor.clip(0)add to Yahoo!Bookmark(1)Total: 2
トラックバック(0)
コメント(0)

トラックバック用URL

コメント

使用できるHTMLタグ
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">