元ネタ: vb.net2005でtar圧縮 (C# と VB.NET の質問掲示板)
WinXp、VB.NET2005環境にて
tarを使用してフォルダを圧縮したいと考えています。
tarってファイルをまとめるだけで圧縮しないんだけど、いいのかなーとか思ったり思わなかったりラジバンダリ。質問者さんに参考にならないかも?なんて思いますが、一応書いてみます。
tarファイルのフォーマットは実はすごく簡単なので、自分で作っちゃうことも可能です。というか、わんくま同盟 東京勉強会 #23 C# Dayとわんくま同盟 大阪勉強会 #22で話した内容はまさにそんな感じの話です。大阪勉強会であまりの準備不足加減に「続きはWebで!」とか言ってしまったまま放置状態だったので、ウホッ!いい機会だから書いてみようかって感じで。
まず、tarファイルのフォーマットについて調べました。Google先生にお伺いを立てたところ、いくつか見つかりました。
- tar32.dllの作者の吉岡さんが書かれたフォーマット説明。
- HP(
ホームページヒューレット・パッカード)のサイトにあった、tarのヘッダ構造体の解説。
HPのサイトの方が正確なのだと思いますが、ヘッダ以外にも知りたいこともあるので、吉岡さんの書かれたドキュメントを参考にしてみましょう。
ファイルを作るときは、tarヘッダ512バイト+データ(512バイト単位)の繰り返しになり、最後に1024バイトの終端データ(すべて00で埋められている)が付加されます。512バイトに満たないファイルは512バイトになるように、残りが00で埋められます。
例えば700バイトのファイルを連結する場合
のような形式になります。この場合、tarファイルの長さは512+512+188+324+1024=2560バイトとなります。
ファイルデータ1と2は便宜上こう表記していますが、実際は一つのデータです。2ファイル以上のファイルを連結する場合はパディングデータの後ろにtarヘッダとファイルデータが続き、最後に終端データが入ります。
今回はここまで。次回はtarヘッダの解説をしようと思います。