เมื่อฉันทำ:
# gzip -c foo > foo1.gz
# gzip < foo > foo2.gz
ทำไมไม่foo2.gz
จบลงด้วยการที่มีขนาดเล็กกว่าขนาดfoo1.gz
?
เมื่อฉันทำ:
# gzip -c foo > foo1.gz
# gzip < foo > foo2.gz
ทำไมไม่foo2.gz
จบลงด้วยการที่มีขนาดเล็กกว่าขนาดfoo1.gz
?
คำตอบ:
เนื่องจากเป็นการบันทึกชื่อไฟล์และเวลาเพื่อให้สามารถลองกู้คืนทั้งคู่หลังจากที่คุณคลายการบีบอัดในภายหลัง เนื่องจากfoo
มีการมอบให้gzip
ผ่าน<stdin>
ในตัวอย่างที่สองของคุณจึงไม่สามารถจัดเก็บชื่อไฟล์และข้อมูลเวลา
จาก manpage:
-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.
ฉันได้สร้างปัญหาขึ้นใหม่ที่นี่:
[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
ในตัวอย่างของฉันเป็นเทียบเท่าของคุณfile.txt.gz
foo2.gz
การใช้-n
ตัวเลือกนี้จะปิดใช้งานพฤติกรรมนี้เมื่อไม่เช่นนั้นจะสามารถเข้าถึงข้อมูล:
[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
ดังที่คุณเห็นด้านบนขนาดไฟล์สำหรับfile.txt
และfile3.txt
จับคู่เนื่องจากตอนนี้ทั้งชื่อและวันที่ตัดออก