Pages

2005-11-21

Linux で DVD マルチ・ドライブ (USB) を使う

2005-11-04 に新しく DVD マルチ・ドライブ (USB 接続) を手に入れた。

前回の記事では、ドライブ購入までの顛末と、/dev/scd0 を /dev/cdrom にシンボリック・リンクを張って音楽が聴けるようにするところまでを書いた。今回は、本来の目的であるデータのバックアップについて書こうと思う (誰ですか、音楽を聴くのが本当の目的だろうなんて言っているのは?)。

DVD-R にデータを焼く

Linux から DVD-R にデータを焼く手順は次の通り。

  1. mkisofsコマンドで ISO9660 なイメージ・ファイルを作る
  2. 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