Androidバックアップtarballを正しく再アーカイブする方法

Androidバックアップtarballを正しく再アーカイブする方法

Androidバックアップtarballを解凍して再圧縮すると、そのアイテムが変更されてバックアップファイルが利用できなくなるという特別な状況が発生しました。

読者の便宜のために、以下はtarballのファイルです。

apps
└── net.daylio
    ├── db
    │   └── entries.db
    ├── f
    │   └── .Fabric
    │       └── io.fabric.sdk.android:fabric
    │           └── com.crashlytics.settings.json
    └── sp
        └── net.daylio_preferences.xml

これで、元tar -tのアーカイブでは次の内容が作成されます。

apps/net.daylio/f/.Fabric
apps/net.daylio/f/.Fabric/io.fabric.sdk.android:fabric
apps/net.daylio/f/.Fabric/io.fabric.sdk.android:fabric/com.crashlytics.settings.json
apps/net.daylio/db/entries.db
apps/net.daylio/sp/net.daylio_preferences.xml

ただし、再パッケージ化されたターボールはファイルを異なる方法で表します。

apps/
apps/net.daylio/
apps/net.daylio/db/
apps/net.daylio/db/entries.db
apps/net.daylio/f/
apps/net.daylio/f/.Fabric/
apps/net.daylio/f/.Fabric/io.fabric.sdk.android:fabric/
apps/net.daylio/f/.Fabric/io.fabric.sdk.android:fabric/com.crashlytics.settings.json
apps/net.daylio/sp/
apps/net.daylio/sp/net.daylio_preferences.xml

(実際にはハイボールにはより多くのファイルがありますが、ここにすべてリストされていません。これが完全な出力です。私が方法を知っていれば、元の構造と一致する最小限に再現可能なタールボールを作成するので、私の質問です)

違いに注意してください。

  1. 再アーカイブ tarball はディレクトリの末尾にスラッシュを追加します。
  2. ソート順が異なります。新しいタールボールはアルファベット順にソートされますが、元のタールボールはそうではありません。
  3. 新しいアーカイブには、ディレクトリ階層の各レベルに別々のエントリがあります。代わりに、元のアーカイブはランダムに省略されているように見えます。一部ディレクトリエントリ。たとえば、明示的なディレクトリエントリがapps/net.daylio/f/.Fabricありますが、apps/net.daylio/db

その中のファイルはまだ同じで、両方のアーカイブはアーカイブマネージャで同じように見えます。しかし、これは、アーカイブされたターボルを何らかの理由で他のディレクトリ構造ではなくAndroidデバイスに復元することができないために問題になります。

私の個人的な目標は、再度アーカイブされたタールボールを私のAndroid携帯電話で実行することです。そのためには、可能な限りオリジナルのタルボールの構造に近い新しいタールボールが必要だと思いました。

  1. ディレクトリの末尾にスラッシュはありません。
  2. apps/net.daylio/f/.Fabric個々のディレクトリエントリとそのサブディレクトリにのみ適用されます。

Q:これら2つの規格に準拠する方法でtarアーカイブを作成する方法は?

--xform "s,/$,,"1)行末のスラッシュと一致すると思ってtarにパラメータを追加して削除しようとしましたが、xformパラメータは何も変更しません。 2)を達成するために、個々のディレクトリエントリの削除を試してみましたが、--exclude "*/"これも何もしませんでした。


私が調査中に訪問したウェブサイトは次のとおりです。

ベストアンサー1

おすすめ記事