%20zu%20erstellen%3F.png)
Ich möchte, dass mein Initramfs unabhängig davon, wann und wo ich es erstelle, denselben Hash hat, sofern der Inhalt der Dateien derselbe ist (und Root-Eigentümer ist und dieselben Berechtigungen hat). Ich sehe in GNU cpio keine Optionen zum Entfernen oder Festlegen von Zeitstempeln von Dateien im Archiv. Gibt es eine relativ standardmäßige Möglichkeit, die Eingabe für cpio und andere Archivierungsprogramme zu bearbeiten, damit Sie reproduzierbare Produkte erhalten?
Gibt es in diesem Zusammenhang einen herkömmlichen Zeitstempel „Wir geben dem kein Datum“? Etwas, woran die meisten Programme nichts aussetzen? Zum Beispiel 0 Epochensekunden?
Wenn ich beispielsweise einen Find-Durchlauf für ein Eingabeverzeichnis für ein Initramfs ausführe und alle Zeitstempel manuell auf 0 setze, könnte ich dann dieses Archiv erstellen, es auf einem anderen System extrahieren, den Vorgang wiederholen und es erneut erstellen und bitidentische Dateien erhalten?
Antwort1
Neuere Versionen von GNU cpio
haben ein --reproducible
Flag, das Ihren Anforderungen einigermaßen entgegenkommt. Meines Wissens nachdas Tool zum Entfernen des Nichtdeterminismusbehandelt die Zeitstempelanforderung im Nachhinein. touch
ermöglicht Ihnen natürlich, die Zeit vor dem Verpacken festzulegen.
Antwort2
Sie können dies mithilfe von tun . star
Es ist integriert und find
basiert auf libfind
.
Rufen Sie zB auf:
star -c H=cpio -find somedir -chmtime 2020-05-20T12:10:12 > archive.cpio
Sie können natürlich auch komplexe find
Regeln für unterschiedliche Zeitstempel verwenden, wenn Sie möchten.
Überprüfenhttp://sourceforge.net/projects/schilytools/files/für eine aktuelle star
Quelle im neuesten schilytools
Tarball.
Übrigens: Ich glaube, das Folgende könnte wie Werbung aussehen, aber die Informationen wurden angefordert und es ist seit seiner Gründung OpenSource. star
Es sollte bekannt sein, UNIX
da es die älteste freie tar
Implementierung ist – es begann im Jahr 1982, was es im Jahr 2020 38 Jahre alt macht.
star
ist die ausgereifteste und funktionsreichste tar
Implementierung, die mir bekannt ist. Andere Implementierungen kopieren normalerweise Konzepte für Archivformaterweiterungen von , das durch das von anderen eingeführte und ebenfalls von ihnen verwendete Eigenschaftenpräfix star
identifiziert wird .SCHILY.*
star
Seit 32 Jahren verzweigt es sich in zwei Prozesse, die sich für maximale Geschwindigkeit ein konfigurierbares FIFO teilen. star -copy
ist schneller als jede andere bekannte UNIX-Baumkopiermethode.
Seit 30 Jahren unterstützt und erkennt es automatisch verschiedene Archivformate.
Seit 17 Jahren ist es ein generisches Archivierungstool, das Befehlszeilenkompatibilität zu verschiedenen UNIX-Archivierungsprogrammen wie tar
und cpio
pax
sogar dem inkompatiblen implementiert GNU tar
.
Seit 16 Jahren unterstützt es die erweiterte find
Kommandozeilensyntax über libfind
. Dadurch wird das Erlernen unnötiger neuer Nutzungskonzepte vermieden, da jeder wissen sollte, wie man verwendet find
.
Seit zwei Jahren gibt es keine Beschränkungen hinsichtlich der Pfadnamenlänge mehr.
Sehenhttp://cdrtools.sourceforge.net/private/star.htmlUndhttp://schilytools.sourceforge.net/man/man1/star.1.htmlfür weitere Informationen.