Warum liefert gzip -c andere Ergebnisse als gzip?

484
drjrm3

Ich schreibe Komponententests für etwas Code und habe festgestellt, dass ein einfaches gzipErgebnis zu einem Unterschied in meinen Ergebnissen führt. Nach weiteren Untersuchungen habe ich festgestellt, dass sich gzipeine andere .gzDatei ergibt als dies der gzip -cFall ist. Warum ist das?

$ echo "foo" > bar $ gzip bar $ zcat bar.gz | gzip -c > test.gz $ cmp bar.gz test.gz  bar.gz test.gz differ: byte 4, line 1 $ stat bar.gz | grep Size Size: 28 Blocks: 0 IO Block: 4194304 regular file $ stat test.gz | grep Size Size: 24 Blocks: 0 IO Block: 4194304 regular file $ zcat bar.gz > foo1.txt $ zcat test.gz > foo2.txt $ cmp foo1.txt foo2.txt  $ echo $? 0  
1
Übrigens, es gibt keinen Sinn, die `-c`-Option zu verwenden, wenn Sie an` gzip` leiten. ** man gzip **: `Wenn keine Dateien angegeben werden oder wenn der Dateiname" - "ist, wird die Standardeingabe auf die Standardausgabe komprimiert.` Alex vor 6 Jahren 0

1 Antwort auf die Frage

3
grawity

Durch das Ausfüllen einer Datei wird der ursprüngliche Dateiname als Teil des Ausgabe-Headers gespeichert.

(Standardmäßig wird auch die Änderungszeit gespeichert, sodass sich auch zwei identisch erstellte .gz-Dateien unterscheiden können.)