저는 파일 압축을 많이 합니다. 압축하는 내용의 대부분은 코드일 뿐이므로 무손실 압축을 사용해야 합니다.
7zip보다 더 나은 크기 감소를 제공할 수 있는 것이 있는지 궁금합니다. 압축하거나 압축을 푸는 데 걸리는 시간은 중요하지 않습니다. 크기가 중요합니다.
Linux에서 사용할 수 있는 다양한 도구와 압축 알고리즘이 텍스트 압축 측면에서 어떻게 비교되는지 아는 사람이 있습니까? 아니면 소스 코드를 압축하는 데 7zip이 최선의 선택입니까?
답변1
보관소너야진짜찾다,특히소스코드를 압축하고 싶다면!
읽어보기에서 인용:
대용량 파일에 최적화된 압축 프로그램입니다. 파일이 크고 메모리가 많을수록 특히 파일이 100MB보다 큰 경우 압축 이점이 커집니다. 장점은 크기(bzip2보다 훨씬 작음) 또는 속도(bzip2보다 훨씬 빠름)로 선택할 수 있습니다. [...] lrzip의 고유한 기능은 항상 시스템에서 사용 가능한 RAM을 최대한 활용하여 최대한의 이점을 얻으려고 한다는 것입니다.
lrzip은 먼저 rzip 기반 알고리즘을 사용하여 장거리 데이터 중복성을 검색하고 제거하는 방식으로 작동합니다.그 다음에중복되지 않은 데이터를 압축합니다.
Konklivas의 의례Linux 커널 메일링 리스트의 좋은 예;그는 10.3GB 타르볼을 압축했습니다.사십Linux 커널 버전은 163.9MB(1.6%)로 떨어지며 xz보다 빠릅니다. 그는 가장 공격적인 두 번째 패스 알고리즘도 사용하지 않았습니다!
큰 소스 코드 타르볼을 압축하면 훌륭한 결과를 얻을 수 있을 것이라고 확신합니다 :)
sudo apt-get install lrzip
예(다른 옵션에는 기본값 사용):
슈퍼 압축, 개 느림:
lrzip -z file
폴더의 경우 다음 lrzip
으로 변경하십시오.lrztar
답변2
7zip
이는 압축기(PKZIP과 같은)만큼 압축기가 아닙니다. Linux에서 사용할 수 있지만 일반 파일의 압축된 아카이브만 생성할 수 있으며 예를 들어 스트림을 압축할 수는 없습니다. 소유권, ACL, 확장 속성, 하드 링크와 같은 대부분의 Unix 파일 속성을 저장할 수 없습니다.
리눅스에서는 다음과 같이압축기xz
, 이미 (LZMA2)와 동일한 압축 알고리즘을 사용하고 있습니다 . 7zip
이를 사용하여 tar 아카이브를 압축할 수 있습니다.
gzip
및 bzip2
와 마찬가지로평행선pixz
여러 프로세서를 활용하여 압축된 변형의 속도를 높일 수 있습니다( xz
버전 5.2.0부터 이 옵션을 사용하여 기본적으로 이 작업을 수행하는 것도 가능합니다 -T
). 이 pixz
변형은 다음도 지원합니다.색인아카이브를 압축합니다 tar
. 즉, 처음부터 파일의 압축을 풀지 않고도 개별 파일을 추출할 수 있습니다.
각주
압축은 아카이브 + 압축(인덱스 사용, 개별적으로 멤버 압축 가능)이며, 아카이브는 압축을 의미하지 않습니다. 이것은 DOS의 문제는 아니지만 프랑스의 문제일 수도 있습니다. 구글에서 유즈넷 아카이브를 검색해 보니 내 글만 보이는 것 같아서, 아닌 줄 알면서도 내 발명품인 것 같다.
답변3
(업데이트된 답변) 시간이 중요하지 않은 경우 ZPAQ v1.10(또는 그 이상)을 사용하십시오. 예:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar
(max.cfg 파일 위치는 다를 수 있습니다. 설치된 패키지 파일 목록을 확인하십시오)
zpaq
실제로는 이전 알고리즘을 기반으로 합니다 kgb -9 newFileName.kgb yourFileName.tar
.
PAQ6, 그리고 매우 느립니다...
7zip, lrzip, bzip2, kgb.. 및 zpaq과 같은 다른 모든 압축기를 테스트했는데 가장 많이 압축되었습니다!
여전히 관심이 있으시면 kgb
:(이것이 이 답변에 대한 원래 선택이었기 때문에 여기에 정보를 남깁니다.)
Ubuntu 14.04는KGB 1.0b4, 실행 sudo apt-get install kgb
하여 설치하세요.
아래는 Windows 버전에 관한 것입니다. Linux에서 실행/컴파일을 시도해 볼 수 있지만 kgb
성공하지 못했습니다.
버전 2 베타2는 다음에서 찾을 수 있습니다.소스 포지, 그러나 Linux 바이너리는 사용할 수 없습니다. 콘솔에서 실행해 볼 수 있습니다 wine kgb2_console.exe -a7 -m9
(이 방법은 -a6 -m9
1.0b4의 가장 좋은 방법과 동등한 것으로 보이며 -a7
2 베타2의 새로운 기능입니다). .NET 2.0을 설치하여 안정성이 향상되었지만와인 팁그리고 실행합니다 wine "KGB Archiver 2 .net.exe"
(저는 이 작업을 좋아하지 않으므로 2 베타2와 거의 동일한 결과를 제공하는 기본 Linux 1.0b4를 사용하겠습니다).
그럼에도 불구하고 버전 2 베타2는 Linux 네이티브 버전을 사용할 자격이 있습니다! 어쩌면 MinGW로 뭔가 할 수 있을지도 모릅니다.이것, 그러나 이 명령은 여전히 심각하게 실패합니다: i586-mingw32msvc-g++ kgb2_console.cpp -o kgb
. dmcs
(Mono)로 컴파일해 볼 수 있나요 ? 바라보다이 팁.
답변4
Z 표준이야기할 가치가 있습니다. 기본 설정에서는 xz만큼 압축되지는 않지만 훨씬 빠르게 압축하고 압축을 풀 수 있습니다. 아치리눅스 시절xz에서 zstd로 전환, 그들은 보고했다
모든 패키지의 전체 패키지 크기는 약 0.8% 증가했지만 모든 패키지의 압축 해제 시간은 약 1300% 가속화되었습니다.
오늘은 동일한 684M 텍스트 코퍼스를 압축하기 위해 xz와 zstd를 사용했습니다. 나는 YMMV라는 엄격한 테스트를 수행하지 않았지만 차이가 너무 커서 필요하지 않은 것 같습니다.
xz
71M로 압축하는데 9분 36초가 걸렸고, 압축을 푸는데 9초가 걸렸습니다.zstd
(기본 옵션) 123M로 압축하고 압축을 푸는 데 6초가 걸렸으며 2초 미만으로 압축을 풀었습니다.zstd -9
99M으로 압축하는 데 42초가 걸렸고, 다시 압축을 푸는 데는 2초도 채 걸리지 않았습니다.zstd -19
xz보다 12분 40초 느리지만 70M로 더 잘 압축되고 여전히 2초 미만으로 압축이 풀립니다.