Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi@ll,

weiß jemand, wie ich mit Perl, die Checksumme einer gepackten *.gz Datei bekommen kann?

Außerdem kann mir jemand sagen, warum, wenn zwei Identische Datein, mit gzip gepackt werden, nicht mehr die gleiche Checksumme haben?

Ich hab eine Datei "A" kopiere diese mit cp nach "B" erstelle eine Checksumme der beiden Dateien und Sie ist gleich. Wenn ich die Datei "A" nach "A.gz" und die Datei "B" nach "B.gz" packe, dann stimmen die Checksummen nicht mehrüberein?! Kann mir das mal jemand erklären?

Mutmaßlich arbeitet gzip nicht deterministisch, sprich für ein und die selbe Ursprungsdatei gibt es mehrere mögliche .gz Ergebnisse

Und wie kann ich jetzt eine Checksumme der Dateien ziehen? Geht das überhaupt, oder muss ich dafür die Datei erst mal entpacken, testen und dann wieder Packen?

bilde die Checksumme der beiden entpackten Dateien oder übertrage/kopiere die gzip Datei und bilde die Checksumme der beiden gzip

In Perl gibt's zwei Möglichkeiten:

Das mit den verschiedenen Archiven könnte auch an der Access/Modify/Change-Time der Dateien liegen. Ich meinte, dass gzip diese mitsichert. Und dann ist klar, dass bei zwei Sicherunge verschieden ATimes vorliegen was zu zwei verschiedenen Archiven führt. Könnte daran liegen.

Die Archive müssen doch auch die Dateinamen mitspeichern. Also dürften die meines Erachtens nicht die selben Checksummen haben, auch wenn die gepackten Dateien identischen Inhalt haben - nach meiner Logik.

Die Archive müssen doch auch die Dateinamen mitspeichern. Also dürften die meines Erachtens nicht die selben Checksummen haben, auch wenn die gepackten Dateien identischen Inhalt haben - nach meiner Logik.

Prinzipiell stimmt das - nur kann gzip nur eine Datei komprimieren... Der Name der Datei ist somit der Archivname nur halt ohne .gz. Um mehrere Daten mit gzip zusammenzufassen wird in der Regel tar benutzt...

Ich hab mir mal die Funktion angeschaut. Verstehe ich das jetzt richtig, ich hab keine Möglichkeit, die gepackten dateien zu vergleichen?

x:~$ mkdir dir1

x:~$ mkdir dir2

x:~$ cp testfile dir1/

x:~$ cp testfile dir2/

x:~$ md5sum dir1/testfile

b264734c0f7291ff69753b3ebe9d3e46 dir1/testfile

x:~$ md5sum dir2/testfile

b264734c0f7291ff69753b3ebe9d3e46 dir2/testfile

x:~$ gzip dir1/testfile

x:~$ gzip dir2/testfile

x:~$ md5sum dir1/testfile.gz

e2bf30864b9ff47f8247f82fc8dbde7c dir1/testfile.gz

x:~$ md5sum dir2/testfile.gz

c317edd4f4a55cd0ca795242fc4aa881 dir2/testfile.gz

Hm, stimmt. Vermutung: Der Ursprungspfad wird mit in der Gzip gespeichert.

Tauschen wir mal die beiden Dateien, dann müssten die Checksummen gleich bleiben aber die Summe aus dir1 müsste bei dir2 stehen:

x:~$ gzip -d dir1/testfile.gz

x:~$ gzip -d dir2/testfile.gz

x:~$ mv dir1/testfile dir2/testfile_from_d1

x:~$ mv dir2/testfile dir1/

x:~$ mv dir2/testfile_from_d1 dir2/testfile

x:~$ gzip dir1/testfile

x:~$ gzip dir2/testfile

x:~$ md5sum dir1/testfile.gz

c317edd4f4a55cd0ca795242fc4aa881 dir1/testfile.gz

x:~$ md5sum dir2/testfile.gz

e2bf30864b9ff47f8247f82fc8dbde7c dir2/testfile.gz

Tadaaaa. Das Rätsel ist gelöst.

Hm, stimmt. Vermutung: Der Ursprungspfad wird mit in der Gzip gespeichert.

Tauschen wir mal die beiden Dateien, dann müssten die Checksummen gleich bleiben aber die Summe aus dir1 müsste bei dir2 stehen:

x:~$ gzip -d dir1/testfile.gz

x:~$ gzip -d dir2/testfile.gz

x:~$ mv dir1/testfile dir2/testfile_from_d1

x:~$ mv dir2/testfile dir1/

x:~$ mv dir2/testfile_from_d1 dir2/testfile

x:~$ gzip dir1/testfile

x:~$ gzip dir2/testfile

x:~$ md5sum dir1/testfile.gz

c317edd4f4a55cd0ca795242fc4aa881 dir1/testfile.gz

x:~$ md5sum dir2/testfile.gz

e2bf30864b9ff47f8247f82fc8dbde7c dir2/testfile.gz

Tadaaaa. Das Rätsel ist gelöst.

Höm, was ist wenn ich jetzt aber eine Datei packe, sagen wir in /dir1/testfile1.gz und diese datei packe ich dann noch mal im /dir1/testfile2.gz, dann haben sie ja nicht die gleiche Checksumme.

Nein.

Weil gzip offenbar den vollen Ursprungspfad mit speichert. Der dürfte mutmaßlich in den Metadaten irgendwo stehen, damit also auch in der Datei.

Und damit hat die eine andere Checksumme

Aber wenn die Pfade gleich sind, dann müssten doch die checksummen gleich sein???

Hallo,

ich habs jetzt endlich, wenn ich die Dateien mit der Option -n sichere, dann funkt das mit dem Vergleich der Dateien:

gzip -help

gzip 1.3.5

(2002-09-30)

usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]

[....]

-n --no-name     do not save or restore the original name and time stamp

[....]
gzip -n mysqldump_070221 mysqldump_070222



md5sum mysqldump_070221.gz mysqldump_070222.gz


cb652b435fca233b291951f330b24a16  mysqldump_070221.gz

cb652b435fca233b291951f330b24a16  mysqldump_070222.gz

Ich hab aber immer noch nicht verstanden, wass er da jetzt nicht mitsichert?!

Was meinen Sie mit dem Originalnamen? Der sieht doch beim unzip doch genau so aus?!

Steht doch da. Den Orignalnamen und den Orginal-Timestamp.

Steht doch da. Den Orignalnamen und den Orginal-Timestamp.

Das mit dem Timestamp verstehe ich, aber der Originalname? Der ist doch nach dem Entpacken gleich, was ändert sich jetzt daran?

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.