tar.gzアーカイブにファイルを追加/更新する方法はありますか?デフォルトでは、/data/data/com.myapp.backup/./files/settings.txt
アーカイブから抽出したいファイル(すでに完了)を含むアーカイブがあり、編集が完了したらアーカイブにプッシュします。どうすればいいですか?.
パスに問題があったのでしょうか?
答え1
アーカイブからファイルを抽出するには、を使用できます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回書き直すという意味なので、あなたが聞きたいものではありません。非常に大きなアーカイブでない場合は、ファイル全体を解凍し、編集後に再圧縮することをお勧めします。あるいは、圧縮されていないアーカイブを使用することもできます。
答え2
tarファイル形式は、単にいくつかのヘッダーに関連付けられた一連のファイルです。分解、内容の追加、再組み立てはあまり複雑な作業ではありません。という、黄褐色の説明プログラムとしてのtarにはこれを行うユーティリティ機能がなく、変更前後に行わなければならない圧縮に関連する他の合併症があります。
しかし、作業を完了するためのツールがあります!少なくとも2つのシステムを使用すると、圧縮されたtarアーカイブをフォルダにループバックマウントしてからファイルシステムを変更できます。完了したら、フォルダをアンマウントすると、圧縮されたアーカイブを使用できます。
最初のオプションはアーカイブマウントプロジェクトはヒューズ。これはこれに関するチュートリアル。システムにすでにFUSEがある可能性があります。そうでない場合は、ディストリビューションにオプションが必要です。
別のオプションはお酒。それ使いやすくなりました。しかし、bzip2アーカイブの破損に問題があると聞いたので、最初に徹底的にテストすることをお勧めします。
答え3
Tarはもともとテープ用に作られていたので、ファイルを「交換」することは実際には設計には含まれていません。ただし、--delete
元のtarからファイルを削除してから-u
tarを更新し、ファイルを再度追加できます。tar
アーカイブを内部的に再構成する必要があるため、時間がかかる場合があります。
答え4
あなたが探しているのはzipです。これはzipがtarよりも良い場所です。さまざまなファイルを含む大規模なディレクトリ構造を圧縮するとき、つまりWebサーバーの実行中のバックアップを実行すると、gzipまたはbzip2は実際に少し優れた圧縮性能を発揮します。
一般的なWPインストールでテストした結果、tar.gzはzip経由で約4MBしか保存しません。これは約660 MBのアーカイブファイル(663 MB / zip)(559 MB / gzip)に対応します。これはまだ不足しています。
zip --symlinks -r -FS /path_to_backup_dir/backup_file.zip /path_to_webroot/ -x /exclusions_as_pattern/