キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

DATの中身

???_148
時折のビジター

DATの中身

HP-UXにDDS4のテープデバイスを接続しています。それで、Windowsでとったデータを取り出したいのです。

やり方がわからないので、どなたか教えていただかないでしょうか?

よろしくお願いします。
1 件の返信
nadachi
レギュラーアドバイザー

DATの中身

Windowsで作ったDDSテープと、HP-UXに接続されたDDSドライブに互換性があれば、(まずないことはないと思いますが),HP-UX上で、DDSテープデバイスのデバイススペシャルファイルをopen()して、テープ上の

recordを順に読んで行くことはできます。しかし問題は、そのrecordはいったい何か? ということです。

例えば、Windowsで "tarフォーマット互換" の DDSテープを作った、ということであれば、HP-UXでも "tar"コマンドがありますから、そのまま読めるはずです。

 ですが、Windowsの xxx社の yyyバックアップソフトで書いたDDSテープだ、とかになるとDDSテープ上の各recordがいったい何を意味するのかが分からないと、データを利用するのは難しいことになります。

DDSテープ上の recordサイズは可変ですから

-- 大きなサイズの read()を順に行い、read()の戻り値を検出されたrecordサイズとする。

または、

-- 小さいバッファサイズでread()を行い、戻り値を

記録しておいて、引き続いて ioctl(fd, MTIOCGET, &mstat) を行い、( struct mtget mstat; と定義してあるものとします。) mstat.mt_resid をreadの戻り値に加えれば record サイズになる。

 のいずれかの手段で、どんなサイズのrecordが並んでいるのか調べ、さらに各recordをダンプしてみて、

どんな構成になっているのか推測できれば、それを読むユーティティプログラムを書くことはできるでしょう。