2010年9月2日木曜日

Mac OS X のバックアップ

Mac OS X の特徴の一つは、起動可能なバックアップを簡単に作成することができる点です。通常、ハードディスク故障の際には、ハードウェアを交換した後、バックアップから書き戻す必要があり、復旧にはそれなりの時間を要します。外付け HDD や USB メモリなどに作成した起動可能なバックアップがあれば、そこから起動することができるので、素早い復旧が可能です。バックアップをこのように使うことについては異論があると思いますが、個人使用のレベルでは、現実的な解の一つであると思います。大抵、壊れるのは〆切り間際とか、時間がない時ですよね?

バックアップというと、OS 標準で提供されている機能は Time Machine です。全自動で履歴付きバックアップを作成してくれるなど、大変便利ではあるのですが、Time Machine のバックアップは起動可能ではありません。起動可能なバックアップを作成するには、OS 付属のディスクユーティリティの“復元” 機能を使うのが便利です。サードパーティーのツールでは、Carbon Copy Cloner が有名です。

フルバックアップはディスクユーティリティでよいのですが、毎回フルバックアップでは時間がかかって困ります。常に起動可能なバックアップを維持するために、一度作成したフルバックアップへ、前回バックアップ時から更新があった分だけ同期させることにします。rsync 3.0.7 をインストールして使います (執筆時点での最新版) 。

OS X 10.6 付属の /usr/bin/rsync はやや古い (バージョン 2.6.9) のですが、新しい版を入れたくない人は、こちらでもいいでしょう。ただし、オプションの指定が違う (--xattrs → -E) のと、ちょっと遅いという問題点があります。

フルバックアップと動作中のシステムを rsync で同期させるには、以下のようなシェルスクリプトを実行します (管理者権限が必要です) 。

#!/bin/sh
BACKUP_STORAGE="Backup HD"
RSYNC=/usr/local/bin/rsync

sudo $RSYNC --dry-run \
            --progress --delete --xattrs \
            --exclude-from=/dev/stdin \
            -a / "/Volumes/$BACKUP_STORAGE" << EOF
/.dbfseventsd
/.hotfiles.btree
/dev/
/home/
/net/
/private/etc/cups/certs/
/private/tmp/
/private/var/audit/
/private/var/db/
/private/var/folders/
/private/var/run/
/private/var/samba/
/private/var/spool/
/private/var/tmp/
/private/var/vm/
/Volumes/
.com.apple.timemachine.supported
.com.apple.timemachine.donotpresent
.fseventsd/
.TemporaryItems/
Desktop DF
Desktop DB
.DS_Store
.Trashes/
Library/Caches/
Library/Logs/
/private/var/log/
.Spotlight-V100/
EOF

シェル変数 BACKUP_STORAGE は、バックアップ先ディスクのボリューム名です。各オプションの意味は、ここでは説明しませんので、各自調べてください。rsync は間違えると痛い目に遭うので、期待通りに動くかどうかを確認 (--dry-run オプション) した方がよいです。ちゃんと動くことを確認したら、上から --dry-run オプションを外してください。

/.dbfsevents と書かれている行から EOF までは、同期の対象としないファイル・フォルダの指定です。バックアップする必要のないファイルや、バックアップした Mac OS X を起動した際に悪さをするようなファイルを除いています。.DS_Store 以下の除外設定は、must ではありません。ゴミ箱、スポットライト、ログファイル、キャッシュを除くかどうかは、各自の事情により判断の分かれるところです。

0 件のコメント:

コメントを投稿