Erstellen und leiten Sie ein gzipptes Tar-Archiv in einem Durchgang weiter

Erstellen und leiten Sie ein gzipptes Tar-Archiv in einem Durchgang weiter

Ich versuche, eine effektive Möglichkeit zu finden, ein gzipptes Archiv verschiedener Systempartitionen auf Android zu erstellen, indem ich alles auf die Standardausgabe (stdout) weiterleite, um es beim Eintreffen verschlüsseln zu können gpg.

Der Workflow sieht folgendermaßen aus:

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

Das Shell-Skript muss im Wesentlichen Folgendes tun:

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

Wie man jedoch sieht, möchte ich das Ganze über eine ADB-Shell-Ausführung erledigen, sodass alles über USB in den Speicher übertragen und schnell verschlüsselt und dann auf die Festplatte geschrieben wird, d. h. keine unverschlüsselten Spuren hinterlassen werden.

Mein Problem ist, dass ich nicht sicher bin, wie ich die internen Komponenten des Skripts in eine tar.gz-Datei umwandeln soll, die aus mehreren Dateien/Quellen besteht. Im Grunde möchte ich aus diesem Skript eine tar.gz-Datei aus stdout ausgeben, die die folgenden Dateien enthält:

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

Gibt es eine Möglichkeit, dies zu tun? Auf meinen bisherigen Reisen ist mir noch kein derartiges Problem begegnet.

Antwort1

Angenommen, Sie möchten mit Tar ein Archiv erstellen und es an die Standardausgabe senden. Folgendes passiert standardmäßig, wenn Sie die fOption zum Senden der Ausgabe an eine Datei nicht verwenden:

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

Wenn das Problem darin besteht, "Dateien" zu archivieren, die eigentlich nicht im Dateisystem vorhanden sind, ist das aufgrund des Formats der Tar-Dateien etwas schwieriger: Jede Datei istvorangegangendurch einen Header, der die Dateigröße angibt. Die Dateigröße im Header muss korrekt sein, denn nur so tarweiß man, wo der nächste Header-Eintrag beginnt.

Dies ist also nur möglich, wenn Sie die Größe des generierten Dateiobjekts genau vorhersagen können. Wenn Sie das können, sollten Sie in der Lage sein, eine Tar-Datei zu erstellen, beispielsweise mit der Standard-Python-BibliothekTar-DateiModul.

Antwort2

Ein Thread, den Sie vielleicht auschecken möchtenHak5Foren zeigen den Weg zu einem Projekt, an dem gearbeitet wird und das andere Bash-Magie nutzt mkfifo... Ich habe festgestellt, dass es, wenn es einmal eingerichtet ist, die Verschlüsselung von fast allem erleichtert und dass es Tools für die Massenentschlüsselung gibt.

Prof ist im Pudding soTravis-CIwird derzeit verwendet, um alle funktionierenden Funktionen anzuzeigen, einschließlich der Wiederherstellung von Testzeichenfolgen, Dateien und Verzeichnissen. Dies wurde auf Android mit Busybox und chroot Linux getestet, aber Sie benötigen möglicherweise nur Busybox (wenn die Ausgaberotation an E-Mail deaktiviert ist), da der Großteil des Quellcodes für begrenzte Systeme entwickelt wurde.

Hinweis für tarspeziell, überprüfen Sie die Build-Protokolle der letzten Tage und Sie werden feststellen, dass es einHaare ausreißenErfahrung, wenn Sie vergessen, das Trailing anzugeben -oder vzum Testen damit herumzuspielen.

verwandte Informationen