TAR auf SD-Karte extrahieren und anschließend den Inhalt überprüfen

TAR auf SD-Karte extrahieren und anschließend den Inhalt überprüfen

Wir extrahieren derzeit ein TAR-Archiv auf eine SD-Karte wie folgt

tar xf ${ROOT}/rootfs.tar -C /cynox/${DRIVE}/${TARGET} 

Nebenbemerkung: Die rootfs.tar enthält Dateien für ein eingebettetes Linux-System. Bei einigen dieser Systeme kommt es zu einer Art Datenbeschädigung auf den SD-Karten. Dies kann zu fehlenden Dateien, beschädigten Dateiinhalten usw. führen, wodurch das eingebettete System nicht richtig funktioniert oder sogar nicht bootet. Dies hängt höchstwahrscheinlich NICHT mit Problemen während der Erstellung der SD-Karte zusammen, aber um ganz sicher zu sein, müssen wir auch in dieser Hinsicht nachforschen.

Wie kann ich den Inhalt der SD-Karte anschließend am besten mit dem Inhalt des Quell-TAR vergleichen?

Ohne zu wissen, ob es unter Linux praktisch ist, fallen mir folgende Dinge ein:

  1. Erstellen Sie ein neues Archiv von der SD-Karte und vergleichen Sie die MD5-Werte beider Archive (oder sind diese natürlich irgendwie unterschiedlich?)
  2. Extrahieren Sie die Quell-TAR-Datei an einen anderen Ort, berechnen Sie den MD5-Wert jeder Datei und vergleichen Sie Datei für Datei (ist es praktisch, alle Ordner/Dateien zu crawlen?)
  3. Kann man den Inhalt der SD-Karte irgendwie direkt Datei für Datei mit dem gepackten Inhalt der TAR vergleichen?
  4. Benötigen wir spezielle Überprüfungen hinsichtlich Ordnerstruktur, Datei-/Ordnerberechtigungen usw.?

Ich weiß nicht, welche Möglichkeiten Linux für diese Aufgabe bietet, daher wäre ich für alle Anregungen, Hinweise in die richtige Richtung und wenn möglich Beispiele dankbar.

Antwort1

Um zu prüfen, ob Sie die gleiche Datei erhalten tar, können Sie Folgendes tun (hier mit GNU tar):

cd /where/it/was/extracted &&
tar tf /path/to/file.tar |
  tar -T - --no-recursion -cf - |
  cmp - /path/to/file.tar

Beachten Sie, dass Inhalt und Metadaten, einschließlich Eigentumsverhältnisse und Zeiten, verglichen werden. Wenn Sie die Dateien beispielsweise nicht als extrahiert haben root, sind die Eigentumsverhältnisse wahrscheinlich unterschiedlich.

Sie sollten außerdem sicherstellen, dass Sie dieselbe Implementierung verwenden, tarmit der die tarDatei erstellt wurde.

Antwort2

Ich würde die Prüfsummen aller Dateien vergleichen.

Geben Sie zunächst rootfsden folgenden Befehl in den Ordner ein:

rootfs# find . -type f -print0 | xargs --null sha1sum --binary > ../rootfs.sum

Überprüfen Sie dann im targetfsOrdner jede Datei:

targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED

verwandte Informationen