Bug: tar+gzip mit externer Festplatte
Hallo Liste, die Verwendung von tar -czf ... mit einer auf einer *externen* Festplatte zu erstellenden Archivdatei führt zu fehlerhaften Daten! Hier ein Auszug einer Terminalsitzung, die das Problem demonstriert: Es werden "identische" Archive auf der lokalen und externen Festplatte erzeugt Script wurde gestartet: Di 29 Jul 2008 23:48:36 CEST tst@erde:~/tvix-nfs/tv> time tar -czf Tatort.tar.gz Tatort*.avi; time tar -czf /media/disk/test/Tatort.tar.gz Tatort*.avi Tatort_Das_Maedchen_auf_der_Treppe.avi Tatort_Fakten_Fakten.avi Tatort_Zahn_um_Zahn.avi real 4m41.908s user 3m40.202s sys 0m14.517s Tatort_Das_Maedchen_auf_der_Treppe.avi Tatort_Fakten_Fakten.avi Tatort_Zahn_um_Zahn.avi real 4m26.568s user 3m39.962s sys 0m15.565s tst@erde:~/tvix-nfs/tv> l Tatort.tar.gz -rw-r--r-- 1 tst users 3886474092 29. Jul 23:54 Tatort.tar.gz tst@erde:~/tvix-nfs/tv> l /media/disk/test/Tatort.tar.gz -rw-r--r-- 1 tst users 3886474092 29. Jul 23:59 /media/disk/test/Tatort.tar.gz tst@erde:~/tvix-nfs/tv> diff Tatort.tar.gz /media/disk/test/Tatort.tar.gz Dateien Tatort.tar.gz und /media/disk/test/Tatort.tar.gz sind verschieden. Was nicht sein sollte! Was stimmt hier nicht? Bei Verwendung von tar -cjf (bzip2) sind die auf einer lokalen wie externen Festplatte erstellten Archive identisch!!! Das auf allen Platten eingesetzte Dateisystem ist ext3. Es ist auch kein Problem meiner externen Festplatte, die funktioniert prächtig; es scheint ein gzip-Problem zu sein! Wichtig: Betroffen scheinen nur sehr große, mehrere GB große Archive zu sein. Verwendete Distribution: opensuse 11 (alle Updates) Thomas Steinke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mit, 30 Jul 2008, Thomas Steinke schrieb:
Es werden "identische" Archive auf der lokalen und externen Festplatte erzeugt
Script wurde gestartet: Di 29 Jul 2008 23:48:36 CEST tst@erde:~/tvix-nfs/tv> time tar -czf Tatort.tar.gz Tatort*.avi; time tar -czf /media/disk/test/Tatort.tar.gz Tatort*.avi Tatort_Das_Maedchen_auf_der_Treppe.avi Tatort_Fakten_Fakten.avi Tatort_Zahn_um_Zahn.avi
real 4m41.908s user 3m40.202s sys 0m14.517s Tatort_Das_Maedchen_auf_der_Treppe.avi Tatort_Fakten_Fakten.avi Tatort_Zahn_um_Zahn.avi
real 4m26.568s user 3m39.962s sys 0m15.565s
tst@erde:~/tvix-nfs/tv> l Tatort.tar.gz -rw-r--r-- 1 tst users 3886474092 29. Jul 23:54 Tatort.tar.gz
tst@erde:~/tvix-nfs/tv> l /media/disk/test/Tatort.tar.gz -rw-r--r-- 1 tst users 3886474092 29. Jul 23:59 /media/disk/test/Tatort.tar.gz
tst@erde:~/tvix-nfs/tv> diff Tatort.tar.gz /media/disk/test/Tatort.tar.gz Dateien Tatort.tar.gz und /media/disk/test/Tatort.tar.gz sind verschieden.
Was nicht sein sollte!
Was stimmt hier nicht?
Dein Vorgehen. Relevant ist nicht das .tar.gz, relevant ist _höchstens_ das .tar, aber eigentlich nur die ausgepackten Dateien. Packe das .tar.gz auf der externen Platte woanders hin aus, und mach dann ein 'cmp' auf die Original- und die wieder ausgepackte Datei. gzip komprimiert bei identischen Daten nicht unbedingt immer identisch. $ dd if=/dev/zero bs=1M count=1 | gzip -c > t1.gz 1+0 records in 1+0 records out $ dd if=/dev/zero bs=1M count=1 | gzip -c > t2.gz 1+0 records in 1+0 records out $ cmp t1.gz t2.gz t1.gz t2.gz differ: char 5, line 1 $ cmp <( gzip -dc t1.gz ) <( gzip -dc t2.gz ) $ echo $? 0 ### d.h. die dekomprimierten Daten in t1 und t2 sind identisch Daß die komprimierten Daten nicht identisch sind liegt schlicht an der Art, mit der gzip die Daten komprimiert, siehe z.B.: http://de.wikipedia.org/wiki/Gzip http://tools.ietf.org/html/rfc1951 http://de.wikipedia.org/wiki/Deflate http://de.wikipedia.org/wiki/LZ77 http://de.wikipedia.org/wiki/Huffman-Kodierung#Huffman-Code Achso, tar.gz ist generell nicht für ein Backup geeignet, RTFFAQ: 7.1. Warum ist .tar.gz oder .tar.bz2 nicht fürs Backup geeignet? http://suse-linux-faq.koehntopp.de/q/q-backup-nicht_targz.html Und ein .avi läßt sich generell (je nach Codec) nicht weiter komprimieren, mit gzip wohl nie (bzip2, 7zip, rar können bei schwach komprimierenden Codecs evtl. das ein oder andere insignifikante Byte rausholen, aber solche Codecs findet man eigentlich nicht mehr in freier Wildbahn). Noch Fragen? -dnh -- "Grove giveth and Gates taketh away." - Bob Metcalfe (inventor of Ethernet) on the trend of hardware speedups not being able to keep up with software demands -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch, 30. Juli 2008 08:32:03 schrieb David Haller:
Hallo,
Am Mit, 30 Jul 2008, Thomas Steinke schrieb:
Es werden "identische" Archive auf der lokalen und externen Festplatte erzeugt ...
tst@erde:~/tvix-nfs/tv> diff Tatort.tar.gz /media/disk/test/Tatort.tar.gz Dateien Tatort.tar.gz und /media/disk/test/Tatort.tar.gz sind verschieden.
Was stimmt hier nicht?
Dein Vorgehen.
gzip komprimiert bei identischen Daten nicht unbedingt immer identisch. Und ein .avi läßt sich generell (je nach Codec) nicht weiter komprimieren, mit gzip wohl nie (bzip2, 7zip, rar können bei schwach komprimierenden Codecs evtl. das ein oder andere insignifikante Byte rausholen, aber solche Codecs findet man eigentlich nicht mehr in freier Wildbahn).
Schon klar, die avi's waren auch nur ein paar beliebige Testdaten. Der Hintergrund waren fehlerhafte tar.gz Dateien auf einer externen Platte, mit denen ein Bekannter im Kundenauftrag zu tun hatte. Er bat mich ebenfalls Archive auf meiner externen Platte mit opensuse 11 zu erzeugen. Jetzt dürfte klar sein, dass es sich bei ihm wohl um ein Hardwareproblem mit einer externen USB-Platte handelt und bei mir alles nach Plan läuft! !
Noch Fragen?
Absolut nicht! Das gzip bei gleichem Input regulär ggf. unterschiedlichen Output erzeugt war für mich so neu wie überraschend! Vielen Dank! Thomas Steinke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (2)
-
David Haller
-
Thomas Steinke