Zgodnie z opisem pliku gz, rozmiar pliku jest zapisywany w ostatnich 4 bajtach pliku .gz.pobierz plik bardzo dużego pliku .gz na platformie 64-bitowej
Stworzyłem 2 pliki z
dd if=/dev/urandom of=500M bs=1024 count=500000
dd if=/dev/urandom of=5G bs=1024 count=5000000
I gziped je
gzip 500M 5G
Sprawdziłem ostatnie 4 bajty robi
tail -c4 500M|od -I (returns 512000000 as expected)
tail -c4 5G|od -I (returns 825032704 as not expected)
Wydaje się, że uderzenie niewidzialną barierę 32bit, sprawia, że wartość zapisana w ISIZE jest kompletnie bez sensu. Co jest bardziej denerwujące, niż gdyby użyli zamiast tego trochę błędów.
Czy ktoś wie, w jaki sposób uzyskać nieskompresowane pliki .gz z pliku .gz bez ich rozpakowywania?
dzięki
specyfikacja: http://www.gzip.org/zlib/rfc-gzip.html
edit: jeśli ktoś go wypróbować, można użyć/dev/zero zamiast/dev/urandom
'dd seek = 10G if =/dev/zero of = out.dat count = 0' jest bardziej przydatny dla większości systemów plików – nodakai