Neden stdin'deki bir dosyayı gzipping, argüman olarak verilen aynı dosyadan daha küçük bir çıktı verir?


13

Ben yaparken:

# gzip -c foo > foo1.gz 
# gzip < foo > foo2.gz

foo2.gzSonunda neden daha küçük boyutta oluyor foo1.gz?

Yanıtlar:


19

Çünkü dosya adını ve zaman damgasını kaydeder, böylece daha sonra açtıktan sonra her ikisini de geri yüklemeyi deneyebilir. Yana fooverilir gziparacılığıyla <stdin>ikinci örnekte, dosya adı ve zaman damgası bilgileri saklamak mümkün değil.

Manpage'den:

   -n --no-name
          When compressing, do not save the original file name and time stamp by default. (The original name is always saved if the name had
          to  be truncated.) When decompressing, do not restore the original file name if present (remove only the gzip suffix from the com-
          pressed file name) and do not restore the original time stamp if present (copy it from the compressed file). This  option  is  the
          default when decompressing.

   -N --name
          When compressing, always save the original file name and time stamp; this is the default. When decompressing, restore the original
          file name and time stamp if present. This option is useful on systems which have a limit on file name  length  or  when  the  time
          stamp has been lost after a file transfer.

Sorunu burada yeniden oluşturdum:

[root@xxx601 ~]# cat /etc/fstab > file.txt
[root@xxx601 ~]# gzip < file.txt > file.txt.gz
[root@xxx601 ~]# gzip -c file.txt > file2.txt.gz
[root@xxx601 ~]# ll -h file*
-rw-r--r--. 1 root root  465 May 17 19:35 file2.txt.gz
-rw-r--r--. 1 root root 1.2K May 17 19:34 file.txt
-rw-r--r--. 1 root root  456 May 17 19:34 file.txt.gz

Benim örnekte, file.txt.gzaramalarınızdan eşdeğerdir foo2.gz. Kullanma -nseçeneği aksi bu davranışı devre dışı bırakır ediyorum bilgilere erişebilir:

[root@xxx601 ~]# gzip -nc file.txt > file3.txt.gz
[root@xxx601 ~]# ll -h file*
-rw-r--r--. 1 root root  465 May 17 19:35 file2.txt.gz
-rw-r--r--. 1 root root  456 May 17 19:43 file3.txt.gz
-rw-r--r--. 1 root root 1.2K May 17 19:34 file.txt
-rw-r--r--. 1 root root  456 May 17 19:34 file.txt.gz

Yukarıda da görebileceğiniz gibi, dosya adları ve tarihleri ​​artık kullanılmadığından dosya boyutları file.txtve file3.txteşleşmeleri.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.