教訓

今日学んだこととしては、ホームディレクトリのバックアップは dump ではなく tar で取りましょう、ということだ。/usr や /var はもしかすると tar だとフラグを完全には戻してくれないことがあるので dump のほうが安全だが、/home の下に特別なフラグを設定したファイルやディレクトリはまず置かないので tar で十分だし、tar+gz(bz2) であれば Windows 上からでも展開できるので安心。

そういえば先日バックアップはどうするか、という話で、delmonta さんは「cp -rp しちゃう」と言っていて、さすがにそれだとシンボリックリンクが切れるから困るから、せめて tar でしょう、と突っ込んだら、shnsk さんが「あれ、cp ってシンボリックリンクもコピーしてくれるオプションあるよ」と教えてくれたのでびっくり。ktanaka 先生によると GNU の cp にはそういうオプションがあるらしいので、即座に FreeBSD の cp と Debian の cp の man を比べてみると、確かに Debian の cp にはそういうオプションがある。ktanaka 先生は「*BSD にはこういったオプションはなかったんだから、知らなくても当然だよ」とのことだったが、かなりショックだった。

というわけで FreeBSD Hypertext Man Pages で、いったいどういう経緯でそうなったのか調べると、どうも cp -R というのがシンボリックリンクシンボリックリンクでコピーするオプションで、これは *BSD に共通のものでかなり前 (4.3BSD より前、2.11BSD より後)からあるようだが、Solaris の cp は現在に至るまでこういったオプションの入った形跡がない。Linux 陣営はこれまたかなり昔から -d というオプションがあり、これでシンボリックリンクをそのままシンボリックリンクとしてコピーしてくれるようだ(これの出所はどこなんだろう)。つまり、Solaris の cp が念頭にあると、cp がシンボリックリンクをうまく扱ってくれないから tar や dump を使おうと思ったりしてしまう、と(さすがに単にディレクトリのコピー取りたいときに dump は使わないけど)。

しかしこのくらいの基本的なところの歴史も知らなかったのは、ちょっと情けないやらなにやら。やはりいろいろな環境を触ってみることは非常に重要だと思う。

# そこに持っていくと ;-P