統計数理研究所の丸山です。

>Date: Thu, 26 Feb 2015 11:51:46 +0900
>From: Hiroo Ono (小野寛生)

>10.xRでは /dev/なんちゃらは /dev に devfs をマウントして自動で生成されるので、元が10.1Rなこの例では
>/dev の下は空なはずです。

あ、そうか。私の 9.1で umount したルートパーティションに /dev/null が
あったので、それで勘違いしてしまったようです。 devd が /dev をマウント
するので、下に何があっても見えない(関係ない)はずですね。

.... でも devd が動き出す前にどれかのプロセスが /dev/null にアクセスし
たらどうなる?いや、いくら何でもOS設計者はそんなヘマやっていないでしょ
うね。(以上独り言)

>私も dump & restore (か cpio? うろ覚えです) でないと失われる属性があるよと教わりましたが、
>そういえばいまどきの tar でそのあたり大丈夫なのか知りません。

やってみましたが、今時の tar は、その点かなり弱点が少なくなっているように思います。
FreeBSD 9.1 で

# (cd /dev; tar cf - null)| (cd /tmp; tar xfp -)

# ( cd /; tar cf - rescue)| (cd /tmp; tar xfp -)

# (cd /usr; tar cf - lib)|(cd /tmp; tar xfp -)

はすべて問題は起こりませんでした。つまり special file, hard link, schg
flag、すべて忠実にコピーされました。

それでも私は dump + restore を勧めたいです。それは /dev の下の扱いがOS
のバージョンによって異なっていて、 /dev の部分のコピーについて、OSバー
ジョン毎の配慮が必要になるからです。 dump + restore は、SunOS4.1、
Solaris 2.6, SunOS5.8, 5.9 5.10、 FreeBSD 1.x 〜9.x まで、すべて同じよ
うに使えます(linuxは使ったことないです)。25年間この方法を使っています。
tar がいかに進歩しても、この用途でdump + restore を越えることはないで
しょう。同じになることはあっても。

西村さんが dump + restore でうまくいかなかった理由は restore の作業領
域不足が原因だろうと想像します。liveCDでFreeBSD(に限らずUNIX)を動かす
と memory file system にルートパーティションを作るので、簡単にメモリ不
足と /tmp 不足が起こります。この事情はSunOS4.1 の時代にもあって、 
restore では太古の昔から TMPDIR という環境変数で /tmp の代わりの場所を
指定できるようになっています。

dump 0f - /dev/ada0p2 |(cd /tmp/x; env TMPDIR=/xxx/yyy restore rf -)

という感じ。でもドライブが二つしかなくて

>#mount /dev/ada0p2 /mnt
>#mount /dev/ada1p2 /tmp/x

だと

dump 0f - /dev/ada0p2 |(cd /tmp/x; env TMPDIR=/tmp/x restore rf -)

も

dump 0f - /dev/ada0p2 |(cd /tmp/x; env TMPDIR=/mnt restore rf -)

も、いずれも恐過ぎてできませんね。ちょっと工夫が必要かな?

--------
丸山直昌@統計数理研究所
_______________________________________________
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"

メールによる返信