<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>ZIPとtarの話</title><link>http://blogs.wankuma.com/popi/category/2159.aspx</link><description>System.IO.Compression名前空間の中のクラスを利用して、ZIPを作ったり解凍したり、tarファイルについても同様にいじってみる話</description><managingEditor>ぽぴ王子</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>ぽぴ王子</dc:creator><title>tar形式について (1)</title><link>http://blogs.wankuma.com/popi/archive/2009/07/03/177027.aspx</link><pubDate>Fri, 03 Jul 2009 18:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/popi/archive/2009/07/03/177027.aspx</guid><wfw:comment>http://blogs.wankuma.com/popi/comments/177027.aspx</wfw:comment><comments>http://blogs.wankuma.com/popi/archive/2009/07/03/177027.aspx#Feedback</comments><slash:comments>46</slash:comments><wfw:commentRss>http://blogs.wankuma.com/popi/comments/commentRss/177027.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/popi/services/trackbacks/177027.aspx</trackback:ping><description>&lt;p&gt;
    元ネタ： &lt;a href="http://bbs.wankuma.com/index.cgi?mode=al2&amp;amp;namber=37917" title="vb.net2005でtar圧縮"&gt;vb.net2005でtar圧縮 (C# と VB.NET の質問掲示板)&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote quote="http://bbs.wankuma.com/index.cgi?mode=al2&amp;amp;namber=37917" title="vb.net2005でtar圧縮"&gt;
    &lt;p&gt;
        WinXp、VB.NET2005環境にて&lt;br /&gt;
        tarを使用してフォルダを圧縮したいと考えています。&lt;br /&gt;
    &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
    tarってファイルをまとめるだけで圧縮しないんだけど、いいのかなーとか思ったり思わなかったり&lt;del&gt;ラジバンダリ&lt;/del&gt;。質問者さんに参考にならないかも？なんて思いますが、一応書いてみます。
&lt;/p&gt;
&lt;p&gt;
    tarファイルのフォーマットは実はすごく簡単なので、自分で作っちゃうことも可能です。というか、&lt;a href="http://www.wankuma.com/seminar/20080809tokyo23/Default.aspx" title="わんくま同盟 東京勉強会 #23 C# Day"&gt;わんくま同盟 東京勉強会 #23 C# Day&lt;/a&gt;と&lt;a href="http://www.wankuma.com/seminar/20080823osaka22/Default.aspx" title="わんくま同盟 大阪勉強会 #22"&gt;わんくま同盟 大阪勉強会 #22&lt;/a&gt;で話した内容はまさにそんな感じの話です。大阪勉強会であまりの準備不足加減に「&lt;span style="font-weight: bold; font-size: large;"&gt;続きはWebで！&lt;/span&gt;」とか言ってしまったまま放置状態だったので、&lt;del&gt;ウホッ！&lt;/del&gt;いい機会だから書いてみようかって感じで。
&lt;/p&gt;
&lt;p&gt;
    まず、tarファイルのフォーマットについて調べました。Google先生にお伺いを立てたところ、いくつか見つかりました。
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;tar32.dllの作者の吉岡さんが書かれた&lt;a href="http://openlab.ring.gr.jp/tsuneo/soft/tar32_2/tar32_2/sdk/TAR_FMT.TXT" title="TAR32.DLL フォーマット説明ファイル"&gt;フォーマット説明&lt;/a&gt;。&lt;/li&gt;
    &lt;li&gt;HP（&lt;del&gt;ホームページ&lt;/del&gt;ヒューレット・パッカード）のサイトにあった、&lt;a href="http://docs.hp.com/ja/B2355-60104-08/tar.4.html" title="tar(4)"&gt;tarのヘッダ構造体の解説&lt;/a&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
    HPのサイトの方が正確なのだと思いますが、ヘッダ以外にも知りたいこともあるので、吉岡さんの書かれたドキュメントを参考にしてみましょう。
&lt;/p&gt;
&lt;p&gt;
    ファイルを作るときは、tarヘッダ512バイト＋データ（512バイト単位）の繰り返しになり、最後に1024バイトの終端データ（すべて00で埋められている）が付加されます。512バイトに満たないファイルは512バイトになるように、残りが00で埋められます。
&lt;/p&gt;
&lt;p&gt;
    例えば700バイトのファイルを連結&lt;a href="http://blogs.wankuma.com/popi/archive/2009/07/03/177027.aspx#d20090703-1-n1" name="d20090703-1-nc1" id="d20090703-1-nc1" class="footnotelink" title="tarは圧縮するわけではないので、この場合『圧縮』ではなく『連結』と呼びます"&gt;[*1]&lt;/a&gt;する場合
&lt;/p&gt;
&lt;p&gt;
    &lt;img src="http://popi.wankuma.com/images/200907/tar_format.gif" width="320" height="246" border="0" title="tarファイルのフォーマット" /&gt;
&lt;/p&gt;
&lt;p&gt;
    のような形式になります。この場合、tarファイルの長さは512+512+188+324+1024=2560バイトとなります。
&lt;/p&gt;
&lt;p&gt;
    ファイルデータ1と2は便宜上こう表記していますが、実際は一つのデータです。2ファイル以上のファイルを連結する場合はパディングデータの後ろにtarヘッダとファイルデータが続き、最後に終端データが入ります。
&lt;/p&gt;
&lt;p&gt;
    今回はここまで。次回はtarヘッダの解説をしようと思います。
&lt;/p&gt;
&lt;div class="footnote"&gt;
    &lt;dl&gt;
        &lt;dt&gt;&lt;a name="d20090703-1-n1" id="d20090703-1-n1" href="http://blogs.wankuma.com/popi/archive/2009/07/03/177027.aspx#d20090703-1-nc1" class="footnotelink"&gt;[*1]&lt;/a&gt;&lt;/dt&gt;
        &lt;dd&gt;tarは圧縮するわけではないので、この場合『圧縮』ではなく『連結』と呼びます&lt;/dd&gt;
    &lt;/dl&gt;
&lt;/div&gt;&lt;img src ="http://blogs.wankuma.com/popi/aggbug/177027.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>