방금 .tarball 을 사용하여 일부 웹사이트(구성, 이미지 디렉터리, CSS 디렉터리 및 웹사이트 콘텐츠(html 파일 등))의 덤프를 압축했습니다 tar czf sitedump.tgz backup_folder/
. 원래 "backup_folder"는 약 600MB이고 압축된 패키지도 약간 더 작습니다.
어떤 상황에서 이러한 압축 형식에 문제가 발생합니까? 이 경우 크기가 최소화되는 이유는 무엇입니까? 타르 버전 1.23
답변1
이건 문제야무손실 데이터 압축, 그들 중 하나한정. 일반적으로 데이터가 무작위일수록 압축하기가 더 어렵습니다. 압축은 기본적으로 패턴을 찾고 더 적은 정보로 이를 표현하기 때문입니다(문장의 시작 부분에서 후속 단어를 예측할 수 있다고 생각할 수 있습니다). 따라서 노이즈는 (거의) 완전히 압축할 수 없는 반면, 길게 반복되는 시퀀스는 매우 잘 압축할 수 있습니다. 이 웨이브 이상의 것을 원한다면 위에 제공된 링크를 시작하는 것이 좋습니다.
타르볼의 경우 - 데이터 제외존재하다파일 및 테이프 아카이브(원래 "tar"의 약자)에는 파일 메타데이터(일반적으로 특정 tar 특성에 따라 파일당 하나 이상의 512B 블록)가 포함되어 있으며 압축도 되어 있습니다. 따라서 가능한 한 압축하지 않으려면 임의의 파일 이름, 임의의 사용자/그룹 ID/이름, 파일 모드를 사용해야 하며, 노이즈 및 파일 메타데이터가 포함된 파일의 크기가 512B 블록인지 확인해야 합니다(제로 패딩을 방지하기 위해). .
놀라울 정도로 큰 아카이브가 발생하는 또 다른 이유는 압축 수준이 낮기 때문일 수 있습니다 gzip
. 독립 실행형 버전의 경우 압축 수준은 (압축 없음)에서 (최대 압축)까지이며 gzip
기본값은 입니다.-0
-9
-6
실제로 가능한 한 많이 압축하려면 다른 알고리즘(따라서 압축기)을 사용해야 할 수도 있습니다.xz
일반적으로 최고의 성과를 낸 사람으로 간주됩니다.
답변2
중간 규모의 웹사이트를 운영하고 있다면 사용자가 제작한 콘텐츠가 많지 않은 이상 HTML, CSS, JavaScript, PHP 등은 수 메가바이트에 달할 것입니다. 이러한 콘텐츠는 일반적으로 잘 압축됩니다.
이는 이러한 이미지가 대략 99% 타르볼 크기라는 것을 의미합니다. 이미지는 이미 압축되어 있으므로 다시 압축해도 크기가 줄어들지 않습니다(또는 다른 압축 알고리즘인 경우 약간만 줄어들 수 있습니다. 매우 높은 품질 요소로 JPEG 이미지를 gzip으로 압축하면 크기가 약간 줄어들 수 있습니다).
압축률이 1:3인 5MB의 텍스트와 코드와 압축률이 1:1.01인 600MB의 이미지가 있다고 가정해 보겠습니다. 결과는 595MB 아카이브입니다.
Linux 시스템에서는 명령을 실행하여 du --exclude='*.jpg' --exclude='*.png' --exclude='*.gif'
일반적인 이미지 형식을 제외한 파일 크기를 디렉터리에 누적할 수 있습니다.