2005-11-04 に新しく DVD マルチ・ドライブ (USB 接続) を手に入れた。
前回の記事では、ドライブ購入までの顛末と、/dev/scd0 を /dev/cdrom にシンボリック・リンクを張って音楽が聴けるようにするところまでを書いた。今回は、本来の目的であるデータのバックアップについて書こうと思う (誰ですか、音楽を聴くのが本当の目的だろうなんて言っているのは?)。
DVD-R にデータを焼く
Linux から DVD-R にデータを焼く手順は次の通り。
- mkisofsコマンドで ISO9660 なイメージ・ファイルを作る
- cdrecord コマンドか growisofs コマンドでイメージ・ファイルを DVD-R に焼く
DVD を焼くには、dvdrecord というコマンドもあるのだけれど、どうもこれは cdrecord のラッパーらしい。手元の man には次のように書かれている。
dvdrecord now is a stub for cdrecord(1) and will execute cdrecord. You may use cdrecord directly, or better use growisofs(1) from the dvd+rw-tools package.
訳せば、dvdrecord は cdrecord の売れ残りで cdrecord を実行しているから、cdrecord を直接実行するか、dvd+rw-tools に含まれている growisofs がもっといいので、そっちを使ってね
ということらしい。cdrecord と growisofs を比べてみると growisofs の方が使い易いので、そちらの使い方を書きます。
iso イメージ・ファイルの作成
foo というディレクトリーの内容を hoge.iso というイメージ・ファイルに書き出すコマンドは次の通り。
$ mkisofs -J -R -L -o hoge.iso foo/
オプションの解説を簡単にすると:
- -J
- Joliet ファイル・システム
- -R
- Rock Ridge ファイル・システム
- -L
- ピリオドで始まるファイル名を許す
- -o hoge.iso
- hoge.iso という ISO ファイルを作る
いくつかのトラブル
イメージ・ファイルの作成で失敗する時がある。僕がハマった失敗と対処法を二つ程載せておく。
一つ目は、以下のようなエラー・メッセージが出て mkisofs が通らないというもの。
Error Incorrectly encoded string (....) encountered.
これは、Shift_JIS なファイル名なんかで、Linux がファイル名を認識できない場合なんかに起こった。ネットから何も考えず Windows なファイルをダウンロードしていたらしい。
どのファイルが引っかかっているか調べるには、次のコマンドを使う。
$ find dir/ | grep '[^[:print:]]'
必要なファイルなら名前を変更。要らなければ消除してしまおう。
二つ目の問題は、mkisofs が無限ループに入っていつまで経っても iso ファイルができないというもの。4 時間もマシンを動かして、どうもおかしいぞと気づいた。
これは、ファイル名が 30 文字を越える場合に起きた。解決策は -l オプション。これはファイル名の文字数制限を緩和するオプションで、規格違反な ISO ファイルを作る。規格違反と言っても、実害は MS-DOS でファイルが読めなくなるだけで、Windows や Linux では問題ないそうな。
あくまで規格に則りたければ、ファイル名を変えるか、tar で固めるなりして iso イメージの中には現れないようにするしかない。
イメージ・ファイルを焼く
hoge.iso という ISO イメージを /dev/scd0 に繋がってる DVD-R に焼く方法は下の通り。
growisofs -dvd-compat -Z /dev/scd0=hoge.iso
growisofs は優れたツールで、ISO ファイルを作りながら DVD を焼くこともできる。こういう方式を on the fly と言い、HDD の容量が少い場合などに便利。上の例だと、次のコマンド一発で mkisofs を動かすこともなく DVD が焼ける。
growisofs -Z /dev/scd0 -J -R -L foo/
数個のファイルをバックアップする場合 on the fly は優利。ただしファイル数が大きい場合は上に書いたようなエラーが起きるとも限らないので、一旦 ISO ファイルを作る方が安全。(僕は) ディスク容量に余裕がある限り ISO ファイルを作るようにしている。
DVD-RAM を使う
DVD-RAM はハードディスクと同じように扱えるのが魅力。容量も 4.7GB と 10 年前の HDD 以上 (初めて買ったマシンの HDD 容領は 1.6GB だったなぁ)。linux で DVD-RAM を使うなら、ファイル・フォーマットも ext2 にしておく方が便利。
DVD-RAM のメディアをフォーマットする
/dev/scd0 で DVD-RAM を認識しているとしてせう。フォーマットの前にパーティッションを作る。
# fdisk /dev/scd0 n (新規パーティション作成) p (基本領域) 1 (領域) 1 (最初シリンダ) 303 (終点シリンダ) w (書き込み)
そんでフォーマット。
# mke2fs -b 2048 /dev/scd0 y
DVD-RAM のメディアをマウントする
/mnt/dvdram に ext2 でマウントするには、/etc/fstab に次の一行を加える。
/dev/scd0 /mnt/dvdram ext2 user,noauto,rw,suid,exec 0 0
基本的に mount の実行は管理者だけに許されている。user オプションを付けると、一般ユーザーでもマウントできるようになる。ここら辺はセキュリティーの兼ね合いで各自で考えて下さい。
再起動後、mount コマンド一発で DVD-RAM をマウントできるようになる。
$ mount /mnt/dvdram
mount ドライブのパーミッション
ところで、DVD-RAM をマウントすると、permission が勝手に変わってしまいとても不便した。
$ ls -ld /mnt/dvdram drwxrwxrwx 3 root root 2 11月 11 18:31 dvdram/ $ mount /mnt/dvdram $ ls -ld /mnt/dvdram drwxr-xr-x 3 root root 2 11月 11 18:33 dvdram/
見ての通り、一般ユーザーの書き込み権限が掻き消されてる。DVD-RAM をフォーマットした時に、管理者権限で次のようにしておくとよさそう。
# mount /mnt/dvdram # cd /mnt/dvdram # chmod 777 . ..
ref
最後に、参考にしたサイトを挙げておきます。半分以上、これらのサイトの焼き直しという説もチラホラ...
No comments:
Post a Comment