Tại sao gzipping một tệp trên stdin mang lại một đầu ra nhỏ hơn so với cùng một tệp được đưa ra làm đối số?


13

Khi tôi làm:

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

Tại sao foo2.gzcuối cùng có kích thước nhỏ hơn foo1.gz?

Câu trả lời:


19

Bởi vì nó lưu tên tệp và dấu thời gian để nó có thể cố gắng khôi phục cả hai sau khi bạn giải nén nó sau. Vì foođược đưa ra gzipthông qua <stdin>trong ví dụ thứ hai của bạn, nó không thể lưu trữ thông tin tên tệp và dấu thời gian.

Từ trang hướng dẫn:

   -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.

Tôi đã tạo lại vấn đề ở đây:

[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

Trong ví dụ của tôi, file.txt.gzlà tương đương với của bạn foo2.gz. Sử dụng -ntùy chọn vô hiệu hóa hành vi này khi nó cách khác sẽ được tiếp cận với các thông tin:

[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

Như bạn có thể thấy ở trên, kích thước tệp phù hợp file.txtfile3.txtphù hợp vì hiện tại cả hai đều bỏ qua tên và ngày.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.