一度にgzipで圧縮されたtarアーカイブの作成と転送

一度にgzipで圧縮されたtarアーカイブの作成と転送

私はAndroidのさまざまなシステムパーティションのためのgzip圧縮アーカイブを生成しますgpg

ワークフローは次のとおりです。

adb shell "/data/dobackup.sh" | gpg --output suchbackup.tar.gz.gpg --encrypt --sign --recipient [email protected]

シェルスクリプトはデフォルトで次のことを行う必要があります。

cat /dev/block/platform/msm_sdcc.1/by-name/recovery > recovery.img
cat /dev/block/platform/msm_sdcc.1/by-name/system > system.img
...

しかし、あなたが見ることができるように、adbシェルを実行してすべての操作を実行し、すべてがUSB経由でメモリに転送され、迅速に暗号化され、ディスクに書き込まれるようにしたい(つまり、暗号化されていないトレースを残さずに)したいと思います。

私が経験している問題は、スクリプトの内部構造を複数のファイル/ソースで構成されるtar.gzファイルにする方法がわからないことです。デフォルトでは、このスクリプトのstdoutは、次のファイルを含むtar.gzファイルを出力しようとします。

/recovery.img
/system.img
/userdata.img
/cache.img
/...

私ができる方法はありますか?今まで旅行しながらそのような問題は経験したことがありません。

ベストアンサー1

ftarを使用してアーカイブを作成し、それを標準出力に送信したいとします。出力をファイルに送信するオプションを使用しないと、デフォルトでは次のことが発生します。

tar cz /{recovery,system,userdata,cache}.img | ...

ファイルシステムに実際に存在しない「ファイル」をアーカイブすることが問題の場合、tarファイルの形式のため、これは少し難しいです。各ファイルは次のようになります。前にファイルサイズヘッダーを含みます。ヘッダーのファイルサイズは、tar次のヘッダーエントリの開始場所を知る必要がある唯一の方法であるため、正確でなければなりません。

したがって、これは結果ファイルオブジェクトのサイズを正確に予測できる場合にのみ可能です。これができる場合は、標準のPythonライブラリなどを使用してtarファイルをビルドできる必要があります。圧縮パッケージファイル基準寸法。

おすすめ記事