gzip, bzip2, xz와 같은 표준 도구를 사용하여 여러 파일을 함께 압축하면 압축률을 높일 수 있습니까?
나는 이것이 사실이라고 생각했지만 테스트하지는 않았습니다. 동일한 바이트의 임의 바이트의 동일한 20Mb 파일의 사본이 2 개있는 경우,이를 인식하는 영리한 압축 프로그램이 전체 타르볼을 거의 20Mb로 압축 할 수 있습니다.
방금 1) 임의의 바이트 파일, 2) 해당 파일의 사본 두 개, 3) 해당 파일의 사본 두 개를 압축하기 위해 gzip, bzip2 및 xz를 사용하여이 실험을 시도했습니다. 모든 경우에 압축으로 파일 크기가 줄어들지 않았습니다. 이것은 사례 1에 대해 예상되지만 사례 2와 3에 대한 최적의 결과는 40Mb 파일이 거의 20Mb로 축소 될 수 있다는 것입니다. 특히 중복성이 먼 압축 프로그램이보기에는 어려운 통찰력이므로 완벽한 결과를 기대하지는 않지만 여전히 압축이있을 것이라고 생각했습니다.
테스트:
dd if=/dev/urandom of=random1.txt bs=1M count=20
cp random1.txt random2.txt
cat random1.txt random2.txt > random_cat.txt
tar -cf randoms.tar random1.txt random2.txt
gzip -k random* &
bzip2 -k random* &
xz -k random* &
wait
du -sh random*
결과:
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 1.40937 s, 14.9 MB/s
[1] Done gzip -k random*
[2]- Done bzip2 -k random*
[3]+ Done xz -k random*
20M random1.txt
21M random1.txt.bz2
21M random1.txt.gz
21M random1.txt.xz
20M random2.txt
21M random2.txt.bz2
21M random2.txt.gz
21M random2.txt.xz
40M random_cat.txt
41M random_cat.txt.bz2
41M random_cat.txt.gz
41M random_cat.txt.xz
41M randoms.tar
41M randoms.tar.bz2
41M randoms.tar.gz
41M randoms.tar.xz
이것이 일반적으로 내가 기대하는 것입니까?
압축을 개선 할 수있는 방법이 있습니까?