7-Zip
1. 개요
프로그래머 Igor Pavlov가 만든 오픈소스 압축 프로그램.
2. 상세
라이센스는 LGPL로 이 프로그램의 가장 큰 장점은 '''자유 소프트웨어'''라는 것이다. 현재도 32비트용 설치파일을 받아서 Windows 98/ME에 설치하고 실행해보면 별 문제없이 동작하지만, 개발자의 답변으로는 Windows 9x에 대한 공식지원은 끝냈다고 한다. 동작할 수는 있어도 정상동작을 보장하지는 않는 것이니 사용할 때 참고할 것.
자체포맷인 7z와 함께 zip, tar, gz, bz2 등의 자유(free)포맷들과 rar, cab, arj, lzh 등의 비자유(non-free)포맷들을 지원한다. WinRAR 5.0에서 새로 추가된 RAR5 포맷을 한동안 열지 못했으나 2015년 8월 9일에 발표된 15.06 베타 버전부터 지원하기 시작했다.
현재의 7z 포맷은 LZMA2 알고리즘을 사용하며 압축률은 RAR5 포맷에 비교하여 약간 높은데, 속도 향상을 위해 매크로가 떡칠되어 코드가 길고 복잡하다. 또한 7z 포맷은 솔리드 압축을 지원하는데, 이를 이용하면 압축하려는 여러 개의 파일 중 바이너리(이진값)가 유사한 파일이 많을 경우 훨씬 더 높은 압축률을 보여준다. 특히 압축하려는 파일들이 개별 파일로는 압축이 잘 안 되지만, 저런 특성을 가지고 있는 경우 마법 수준의 차이가 나오기도 한다. 대신 압축된 파일들 중 하나만 압축 해제를 하려고 할 때도 압축 파일 전체를 스캔해야 한다는 단점이 있다. 압축 용량 2GB짜리 압축 파일에서 15KB짜리 ReadMe.txt 파일을 읽으려면, 메모리던 임시 폴더던 어딘가에 파일이 있는 블록(e.g 256MB)를 다 풀어놓고 나서 원하는 15KB짜리 파일을 빼돌린 다음 나머지 파일을 삭제하는 뻘짓을 해야 한다. 물론 이런 작업은 사용자가 하는게 아니라 프로그램이 뒤에서 해서 준다. 속도가 느릴 뿐. 이건 솔리드란 개념 자체의 한계이고, 7z은 널리 쓰이는 압축 포맷 중 유일하게 솔리드 블록 크기 조절을 통해 타협할 수 있으니 장점에 가깝다.[1]
LZMA2의 전신인 LZMA는 등장 초기에도 당시의 RAR 포맷보다 높은 압축률을 보여주었으나, 이후 RAR5 포맷에서 알고리즘을 개선하는 등 지속적으로 업데이트를 하는데 반해, 7-Zip은 알고리즘의 업데이트가 없다시피 했었다. 압축 알고리즘은 무조건 압축률만을 따지는 게 아니라, 압축 연산에 소요되는 시간과 압축률의 최적조건을 따져 가면서 개발하는 것이다. 이유라면, 7-Zip/LZMA는 나올 때부터 속도보다는 압축률에 초점을 두고 만들어졌기 때문에 압축률 개선은 그다지 할 것이 없었기 때문이다. 한동안 압축 알고리즘이 아닌 프로그램 자체(7z Manager)의 버그만 중점적으로 개선하다가 2012년 10월 26일 출시된 9.30 알파 버전부터 LZMA2 알고리즘이 기존의 LZMA를 대체하였다. 이후 버전들에도 레거시 포맷 지원을 위해 LZMA는 여전히 남아 있다. 그 밖에도 압축파일의 암호화로 AES-256 encryption을 지원하고 87개의 언어 지역을 서포트한다.
2010년 11월 18일 출시된 9.20 버전 이후로 한동안 베타 버전만 나오다가 5년만인 2015월 11월 19일에 15.12 버전이 출시되었으며, 2018년 3월 15일 기준으로 18.01이 최신 안정화 버전이며 베타 버전으로 18.03이 나와 있는데, 압축 해제 속도가 64비트 버전 기준으로 쓰레드당 30% 개선되었다. 베타 버전이긴 하지만 상당히 빨라지고 별다른 문제도 없으므로 7-Zip 사용자라면 18.03으로 넘어가 보는 것을 추천한다. 2018년 4월 30일에 18.05로 업데이트되었다. 2019년 02월 21자로 빌드가 바뀐 19.00 버젼이 나왔는데 이후 19년 9월 초순까지는 메이저 업데이트가 없다.
리눅스에도 배포되는데, p7zip이라는 cli 프로그램과 p7zip-gui라는 GUI프론트엔드를 쓴다. GUI버전을 사용하는 사람은 별로 없고, p7zip cli 프로그램을 활용하는 GUI 아카이브 매니저[2] 를 보통 사용하는 편.
3. 장점
허접해 보이는 7-Zip의 탐색기는 외형과는 다르게 상당히 강력해서, 홈페이지에서도 주요 기능 중 하나로 소개하고 있다. Temporary Internet Files 아래의 Content.IE5 하위 폴더 같은 윈도우 탐색기에서 마우스만으로는 절대 접근이 불가능한[3] 폴더에 접근할 수 있는 것은 물론이고, 탐색기에서 만들고도 편집 불가능한 '''긴 이름 파일'''의 관리도 가능하다. 긴 이름 파일이란, 탐색기에서 파일명을 변경할 때 지나치게 길게 입력하면 변경된 파일명이 탐색기에서 보이기만 할 뿐, 삭제/수정/변경 등 파일 작업이 모두 불가능해지는 유령 파일을 말한다. 이런 파일은 대부분의 탐색기 호환 프로그램으로는 제어가 불가능하므로 이러한 오류를 전문으로 교정하는 유틸리티를 이용해야 한다.
별도로 존재하는 64비트 버전을 사용하면 압축/해제 속도가 32비트 버전에 비해 더 빠르며, 멀티스레드 활용도가 좋아서 프로세서가 멀티코어라면 압축속도가 싱글코어 대비 확실하게 빨라진다. 자기 프로그램의 점유율 만을 생각했는지 압축률과 속도 및 안정성 모두 극히 떨어지는 ALZ라는 포맷을 만든 알집과 확실히 비교되는 부분이다. 그리고 자체적으로 CPU의 성능 벤치마크를 제공한다. 벤치마크 하는 방법. 이를 이용하여 자신의 CPU 성능이 어느 정도 되는지 간단하게 알아볼 수 있다.
명령줄 옵션을 이용해 파일 또는 폴더를 대상으로 개별 항목 혹은 전체 묶음의 체크섬을 계산하는 기능이 있다. 별도의 프로그램이 필요 없을 정도로 많은 종류의 알고리즘을 지원하고 기능도 충실해서 MD5나 CRC 등의 일치 여부를 확인할 때 7zip만 가지고도 충분히 사용할 수 있다.
간판격인 7z 포맷의 대중화가 충분히 이루어져 있다는 것도 장점. 알집을 비롯하여 대부분의 압축 프로그램들은 7z 포맷을 풀 수 있다. Self-extracting EXE로 만들 수도 있으며 분할 압축도 된다. 파일을 압축한 다음 압축해제기능이 있는 EXE 실행파일에 통합하여, 압축 프로그램이 없는 컴퓨터에서도 실행만 하면 바로 압축을 풀 수 있게 만든 것. 다만, Self-extracting EXE와 분할압축을 동시에 쓸 수 없고 LZMA 알고리즘이 복잡해서 7z 포맷으로 압축하는 속도는 zip 포맷에 비해 느린 것이 단점이다. 대신 압축 해제 속도는 알고리즘의 복잡성에 비해 상당히 빠르다. 다른 압축 포맷들의 해제 속도가 압축 속도와 비슷한 수준으로 느리다는 것을 보면 큰 장점이다.
반대로 손상되거나 다운로드 중 끊긴 압축파일을 해제할 때는 상당히 간편하다. WINRAR은 복구기능 사용 후 해제해야 되는데 7 ZIP은 그냥 해제해버린다.
언어코드 등의 이유로 파일이름 인식이나 압축해제에 실패했을 때 WinRAR는 무조건 작업을 중단하고 중간까지 풀리던 파일들을 모두 삭제한다. 정확히는 WinRAR도 Command-line 명령을 쓰면 오류 발생 시 작업하던 파일을 삭제하지 않도록 조치할 수는 있는데 복잡하고 번거롭다. 그에 반해 7-Zip은 인식되지 않는 문자들을 밑줄 등으로 변환해서 해제하는 것을 기본으로 작동한다. 자세히 설명하면, 7-Zip은 파일명을 유니코드로 기록하고 해제할 때는 유니코드로 기록된 파일명을 운영체제의 문자셋에 맞춰 변환하며 해제한다. 이 부분은 확실한 7-Zip만의 장점이다. 압축 해제에 실패했을 경우에도 해제되던 부분까지는 그대로 남겨두기 때문에 분할 압축된 하나의 큰 파일의 경우 일부를 미리 확인할 때 유용하다. 또한 WinRAR는 압축풀기 수행 시 필수적으로 임시 폴더에다가 임시 파일로 생성해가며 해제하는데 반해, 압축 해제 위치에 압축이 풀리는 파일 자체의 크기를 늘려가며 해제하므로 디스크의 여유 공간이 부족할 때 유용하다. 또한 이런 특징 덕분에 하드디스크일 경우 단편화 문제에서도 7-Zip이 유리하다.
autorun.inf의 기능을 악용하는 악성코드인 오토런 바이러스 감염으로 USB 메모리 속 파일들이 보이지 않는 상황일 때 7-Zip 탐색기로 찾아 들어가면 보이는데, 이 파일들을 압축하여 압축파일을 다른 경로에서 풀어주면 복구가 되는 현상이 있다. 이는 단순히 바이러스가 원본폴더/파일에 숨김 속성을 걸어서 보이지 않았던 것이 7-Zip으로 압축했다가 해제하는 과정에서 파일 속성이 풀렸기 때문이고, 7-Zip은 숨김 파일 속성을 무시하므로 정상적으로 내용물이 보인 것 뿐이다. 이는 오토런 바이러스가 치료된 것이 아니므로 파일을 되찾고 나서 그대로 방치하면 절대 안 되고, 반드시 백신으로 제대로 치료해야 한다.
4. 단점
오류 정정 기능[4] 이 전혀 없어서 압축 파일에 작은 이상이라도 생기면 안에 들어있는 데이터가 그대로 쓰레기가 된다는 단점이 있다. 요즘 시대에 그런 게 왜 필요하냐면, 대량의 데이터를 취급하는 파일 호스팅이나 웹하드 서비스에서 회선상의 문제로 인해 간혹 업로드하는 파일의 일부가 깨져서 손상된 채로 올라올 때가 있는데, 이것이 없으면 업로더가 파일에 이상이 있음을 스스로 깨닫고 다시 올려 주기를 바라는 수밖에 없기 때문이다. 물론 이런 일이 자주 발생하는 것은 아니므로 일종의 보험 같은 기능이다. 그래서 해시 체크를 한다거나 1bit라도 용량절감이 더 중요하다면 7-zip이 낫다. 실제로도 rar 포맷 대신 7z 포맷을 이용해서 트래픽 부담을 최소화하는 배포자들도 많다. 그리고 토렌트는 파일 조각마다 해시 체크를 수행하므로 파일이 손상되었을 때는 해당 조각을 자동으로 다시 받는다. 토렌트로 손상된 파일을 받는 경우는 애초에 손상된 파일이 공유된 것이다. 이것을 잘못 이해한 일부 사람들은 "외장하드에 자료를 7-zip으로 백업해뒀는데 배드섹터가 하나라도 발생하면 망했어요..."라고 주장하는 경우가 있는데, 배드섹터가 발생하면 데이터가 일부 파손되는 수준이 아니라 배드섹터 이후 부분부터는 파일복사 자체가 제대로 안되기 때문에 압축 프로그램의 종류를 따지기 이전의 문제로서 소프트웨어 알고리즘의 오류 정정 기능으로는 택도 없는 상황이 된다. 그러니까 이런 경우에는 개인 차원에서 저장장치의 상태를 자꾸 악화시키지 말고 빨리 복구전문업체로 문의하는 것이 데이터를 최대한 살릴 수 있는 가장 좋은 방법이다.
분할 압축을 살펴 보면 7z 포맷의 분할 압축에는 첫 번째 파일에만 파일 형식 정보가 있을 뿐 분할된 다른 파일들에는 그것이 없기 때문에, 7-Zip에서 풀 때는 상관없지만 다른 압축 프로그램에서 풀려고 하면 문제가 발생하기도 했는데, 이런 점에서 RAR이 낫다고 보기도 했다. 하지만 수년 전에는 이러한 경우가 있었지만 7-Zip의 인지도가 많이 올라간 요즘에는 마주치기 쉽지 않은 문제이므로 더 이상 신경 안 써도 된다. 게다가 리눅스의 tar가 수행하는 역할처럼, 7zip의 분할 파일들도 DOS(명령 프롬프트)에서 copy /b 명령을 사용해 간단히 한 개의 7z 파일로 만들어 줄 수 있다. (물론 7zip 자체에서도 가능) RAR 분할 압축에서는 압축을 푼 다음 다시 하나로 묶어야 하는데, 이런 번거로움이 없어서 WinRAR의 강력한 오류 정정 기능을 제외하면 7zip의 분할 압축이 더 편리하다고 볼 수 있다.
5. 관련 항목
[1] 128MB, 256MB식으로 솔리드로 압축할 크기 한계를 정할 수 있다. 반디집은 고급 압축 설정에서 설정 가능하다. 반면에 RAR이나 EGG(알집)은 on/off만 가능.[2] Gnome 데스크톱 환경용 압축 관리 프로그램.[3] 주소표시줄에 경로를 직접 입력해야 접근가능[4] rar의 recovery record, recovery volume