2007-08-17

Mac OS Xのバックアップ

以前にもあれこれ調べ、

  • USB接続のhp DAT72装置をMac miniは認識してくれないこと
  • dumpがHFS+Jのリソースフォークをサポートしないこと

に落胆してる。

それでもテープにコピりたいので考える。が、こう暑くては何も浮かばないので、楽な方法に落ち着こう。手間がかかるので、定期的にできそうにないのが困りもんだが。

  1. 起動ディスクのディスクイメージ(dmgファイル)を外部ディスクに作成
  2. できたディスクイメージを、リモートに接続したDATにtarで吸い上げ

いいじゃん、もうこれで。

ディスクイメージの作成

まず、先日外部ディスクに「復元」機能で作成した、PPC Mac miniのバックアップをディスクイメージに変換してみる。

sudo hdiutil convert /dev/diskXsNN -format UDBZ -o どこか/PPC-Mac-mini.dmg

てな感じかな。manを見てて、コマンドラインからならbzip2圧縮(UDBZ)が選択できることを発見。たぶん、ディスクユーティリティからの圧縮指定だとzip圧縮(UDZO)相当になると思われる。さて、UDBZフォーマットで作ったdmgファイルからを、ディスクユーティリティは扱えるんかな? まぁ、扱えなくても、hdiutil使えば戻せるわけで、心配はいらないけども。あと、/dev/diskXXといったデバイス名は、mountの出力から引いて来る。

$ mount
/dev/disk0s2 on / (local, journaled)
devfs on /dev (local)
fdesc on /dev (union)
<volfs> on /.vol
automount -nsl [120] on /Network (automounted)
automount -fstab [168] on /automount/Servers (automounted)
automount -static [168] on /automount/static (automounted)
/dev/disk1s10 on /Volumes/miniStack (local, nodev, nosuid, journaled)
/dev/disk5s10 on /Volumes/disk2s10 (local, nodev, nosuid, journaled)
/dev/disk6s10 on /Volumes/PPC Macintosh HD (local, nodev, nosuid, journaled)

たぶんデバイス名でなくmountポイントでもよさげだけど、Machintosh HDみたくSPCが入ったりするから、だいたいにおいて、デバイス名の方が楽。

実行すると、アクティビティモニタのフローティングCPUメーターが2列とも100%に貼り付きます。topで見るとこんなだ。

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS RPRVT  RSHRD  RSIZE  VSIZE
5217 hdiutil    168.4% 37:02.29   9    58    93  17.8M- 1.20M  23.1M- 69.3M 

わはははは。そうか、100%を超えるのか。

$ date; sudo hdiutil convert /dev/disk6s10 -format UDBZ -o /Volumes/disk2s10/PPC-Mac-mini.dmg; echo return code: $?; date
Fri Aug 17 15:46:51 JST 2007
イメージ作成エンジンを準備中...
“ディスク全体 (Apple_HFS : 0)”を読み込み中...
...............................................................................
   (CRC32 $D63C4EC1:ディスク全体 (Apple_HFS : 0))
リソースを追加中...
...............................................................................
経過時間: 1h 42m 29.103s
ファイルサイズ:27655390208 バイト、チェックサム:CRC32 $8D93B500
処理されたセクタ数:489970768、77131209 圧縮されました
速度:6.1M バイト/秒
節約率:89.0%
created: /Volumes/disk2s10/PPC-Mac-mini.dmg
retuen code: 0
Fri Aug 17 17:29:28 JST 2007
$ 

げげん。二時間弱もかかってるし。ここからtarで吸い上げるのでも二時間はかかるだろうに。ちなみに、LANG関連は一切設定してません。hdiutilが勝手に日本語を喋ってるのです。

tarで吸い上げ

さて、tarはtarで、いろいろある。Mac OS XのtarはGNU tar。なら、--rsh-command=sshでrmtが使えるはず。

$ cd /Volume/disk2s10
$ tar --rsh-command=ssh -cf kamui.mob.or.jp: PPC-Mac-mini.dmg 
tar: Cannot execute remote shell: No such file or directory
tar: kamui.mob.or.jp?:: Cannot open: Input/output error
tar: Error is not recoverable: exiting now

あれ?

$ tar --rsh-command=ssh -cf kamui.mob.or.jp:/dev/sa0 PPC-Mac-mini.dmg 
tar: Cannot execute remote shell: No such file or directory
tar: kamui.mob.or.jp?:/dev/sa0: Cannot open: Input/output error
tar: Error is not recoverable: exiting now

フルパスかよ。

$ tar --rsh-command=/usr/bin/ssh -cf kamui.mob.or.jp:/dev/sa0 PPC-Mac-mini.dmg 
bash: /usr/libexec/gnurmt: No such file or directory
tar: noroi@kamui.mob.or.jp?:/dev/sa0: Cannot open: Input/output error
tar: Error is not recoverable: exiting now

なんじゃこりゃ?

$ strings /usr/bin/tar | grep rmt
/etc/rmt
rmt-command
      --rmt-command=COMMAND      use given rmt COMMAND instead of /etc/rmt
/usr/libexec/gnurmt

おいおい、嘘をつくなよ。/etc/rmtじゃなくて/usr/libexec/gnurmtが埋め込まれてんじゃんか。んじゃ、こうだ。

$ date; tar --rsh-command=/usr/bin/ssh --rmt-command=/etc/rmt -cf kamui.mob.or.jp:/dev/sa0 PPC-Mac-mini.dmg; date
Fri Aug 17 17:32:13 JST 2007
Fri Aug 17 21:02:51 JST 2007

三時間半ですか。ちょっとかかりすぎでは。一応、GbEな環境なんだがなぁ。

とまぁ、こんな感じでできることはわかった。5時間半もかかる作業を、定期的に実行するとは思えんけどね。

0 件のコメント:

コメントを投稿