방금 중복 파일로 tar 아카이브를 작성하여 압축 여부를 확인하는 약간의 실험을했습니다. 세부 사항은 다음과 같습니다 (읽기 즐거움을 위해 들여 쓴 결과) :
$ dd if=/dev/urandom bs=1M count=1 of=a
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.114354 s, 9.2 MB/s
$ cp a b
$ ln a c
$ ll
total 3072
-rw-r--r-- 2 guido guido 1048576 Sep 24 15:51 a
-rw-r--r-- 1 guido guido 1048576 Sep 24 15:51 b
-rw-r--r-- 2 guido guido 1048576 Sep 24 15:51 c
$ tar -c * -f test.tar
$ ls -l test.tar
-rw-r--r-- 1 guido guido 2109440 Sep 24 15:51 test.tar
$ gzip test.tar
$ ls -l test.tar.gz
-rw-r--r-- 1 guido guido 2097921 Sep 24 15:51 test.tar.gz
$
먼저 무작위 데이터 (a)의 1MiB 파일을 만들었습니다. 그런 다음 파일 b에 복사하고 c로도 연결했습니다. 타르볼을 생성 할 때 타르볼은 ~ 3Mib가 아닌 ~ 2MiB에 불과하므로 tar는 하드 링크를 알고있었습니다.
이제 a와 b가 중복되기 때문에 gzip이 tarball의 크기를 ~ 1MiB로 줄일 것으로 예상했지만 tarball 내부에 1MiB의 연속 데이터가 반복되어야하지만 아직 발생하지 않았습니다.
왜 이런거야? 이 경우 어떻게 tarball을 효율적으로 압축 할 수 있습니까?