tarとmtxコマンドを使いこなす

一つ前のmtxコマンドの雑記と関連します。

2TBのHDDが1万円を切る値段で売られている昨今、現役世代のテープメディアといえばLTO-4ですね。
LTO-5も数ヶ月前にドライブが発売になりました。

この最新のLT0-5は1.6TB/圧縮時3TBで、圧縮時の転送速度は約300MB/s近くにもなるようですが、問題になるのはテープの入れ替え作業ですね。

最新型のライブラリを買うお金があるなら、バックアップソフトもちゃんと買えといわれそうですが、なじみのあるtarでやりたいんだよという場合のtipsです。


バックアップ対象が、テープ一本に収まってしまう場合は特に必要ありませんが、ライブラリまで買っているような場合、一本で収まらない場合も多々あります。
そういうときは、tarコマンドのマルチボリュームオプションを使います。

  • Mでマルチボリュームを有効にします。


こんな感じですね。

tar -M -cvf /dev/nst0 -C / data

テープ一本で収まれば、そのまま完了します。
収まりきらず、次のテープを入れて欲しいときは、プロンプトがこんな感じになります。

Prepare volume #2 for /dev/nst0 and hit return:

次のメディアに入れ替えて、Returnを押してくれ!再開するから。 という意味です。
このタイミングで、前出のmtx unload/load もしくはmtx next等を使ってテープを入れ替えて、Returnを押してあげると、続きをとり続けるわけです。
この作業を、バックアップが終わるまで繰り返すわけです。


しかし、バックアップ対象のファイルのサイズによって所要時間は大きく変わるものです。
画面に張り付いて、いつ終わるとも分からないバックアップを待ち続けるのは賢い選択とはいえないでしょう。
また、夜中にテープ入れ替え要求が来てしまったら、翌朝までtarはreturnを待っているので、時間の無駄です。


テープの入れ替えを自動で行いたい。
その要求に応えるのが、--info-scriptオプションです。

    • info-scriptオプションは、テープの入れ替えを行うスクリプトを用意しておき、tarがテープの入れ替えを必要としたときにスクリプトを呼び出すように設定します。

先ほどの例に--info-scripを組み合わせると、下記のようになります。

tar -M -cvf /dev/nst0 -C / data --info-scrip=tapechange.sh

使い方は簡単。--info-scrip=テープ入れ替え用のスクリプト とするだけです。
もちろん、tapechange.shを用意して、適切なパーミッション設定をしてください。

tapechange.shの一番簡単な例としては下記のようなものでしょう。

mtx -f /dev/changer next

この辺りは、自分で準備する必要があります。


私の場合は、メディアラベルを指定したかったので、別途用意したメディアリストからラベルを読み込んで、指定順にメディアを入れ替えていくようなスクリプトを書きました。

mtxコマンドは、移動したテープのメディアにどんな情報が入っているかについては、ノータッチです。

コマンド/スクリプトを間違えると、他のバックアップファイルが保存されているメディアをドライブに突っ込んで、上書きしてしまったりする可能性もあります。
くれぐれも慎重に。