내가 할 때 :
# gzip -c foo > foo1.gz
# gzip < foo > foo2.gz
왜 foo2.gz
결국 크기가 더 작 foo1.gz
습니까?
답변
파일 이름과 타임 스탬프를 저장하므로 나중에 압축을 푼 후에 모두 복원하려고 시도 할 수 있습니다. 이후 foo
에 부여 gzip
를 통해 <stdin>
두 번째 예에서는 파일 이름과 타임 스탬프 정보를 저장할 수 없습니다.
맨 페이지에서 :
-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
. 은 Using -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
일치합니다.