回答:
tarファイル形式は、いくつかのヘッダーと連結された一連のファイルです。それをバラバラにして内容を入れ、元に戻すのはそれほど複雑な仕事ではありません。そうは言っても、Janderは、プログラムとしてのtarがこれを行うユーティリティ機能を持たず、変更を行う前と後の両方で圧縮に伴う追加の問題があることを説明しました。
しかし、仕事のためのツールがあります!少なくとも2つのシステムがあり、圧縮されたtarアーカイブをフォルダーにループバックマウントしてから、ファイルシステムに変更を加えることができます。完了したら、フォルダをアンマウントし、圧縮アーカイブをロールする準備ができました。
最初のオプションの1つは、FUSEのarchivemountプロジェクトです。ここにそのチュートリアルがあります。お使いのシステムには、おそらく既にFUSEがあり、それがなければ、ディストリビューションにオプションが必要です。
他のオプションはtarfsです。それはだ簡単に使用でき、私はあなたがかなり徹底的に最初にそれをテストする可能性があるので、それが破損bzip2のアーカイブでいくつかの問題を持って聞きました。
アーカイブからファイルをプルするには、を使用できますtar xzf archive.tar.gz my/path/to/file.txt
。ファイルのパスにあるディレクトリも作成されることに注意してください。tar t
(つまりtar tzf archive.tar.gz
)を使用して、アーカイブ内のファイルをリストします。
tar
ファイルの「インプレース」更新をサポートしていません。ただし、アーカイブ内のファイルと同じパスを持っている場合でも、アーカイブの最後にファイルを追加できます。その場合、ファイルの両方のコピーがアーカイブ内にあり、後で追加されたファイルが以前のコピーをオーバーライドします。これに使用するコマンドはtar r
(またはtar u
、アーカイブよりも新しいファイルのみを追加するために)使用するコマンドです。.
パスでは問題になることはありません。
ただし、問題があります。圧縮アーカイブに追加することはできません。だからあなたはする必要があります:
gunzip archive.tar.gz
tar rf archive.tar data/data/com.myapp.backup/./files/settings.txt
gzip archive.tar
アーカイブ全体を2回書き換えることを意味するため、これはおそらく聞きたくないことです。非常に大きなアーカイブではない場合は、すべてを展開し、編集後に再度展開することをお勧めします。または、非圧縮アーカイブを使用することもできます。
tar
プログラムを扱う場合にのみ正しいです。ファイル形式としてのTarは、実際には非常にアクセスしやすいです。自分でコンテンツを更新するスクリプトを簡単に書くことができますが、すでにこれを行うツールは他にもあります。
gzip -dc archive.tar.gz | tar -r data/data/com.myapp.backup/./files/settings.txt | gzip >archive_new.tar.gz
タールはもともとテープに使用することを意図していたため、ファイルの「置換」は実際には設計に含まれていません。ただし、-deleteを使用して元のtarからファイルを削除し、-uを使用してtarを更新し、ファイルを再追加できます。tarはアーカイブを内部で再編成する必要があるため、少し時間がかかる場合があります。
.DS_Store
再tarする必要があります。