<colbgcolor=#000><colcolor=#fff> | |
분류 | 압축 소프트웨어 |
개발자 | 이고르 파블로프 |
최초 공개 | 1999년 7월 18일 |
정식 버전 | 24.08 |
플랫폼 | Windows, Linux[21.01+], macOS[21.02+] |
라이선스 | 프리웨어 (오픈 소스) |
[clearfix]
1. 개요
7-Zip은 러시아의 프로그래머 이고르 파블로프(Igor Pavlov, Игорь Павлов, 1950~)가 만든 압축 프로그램이다.2. 상세
오픈 소스 LGPL 라이선스의 자유 소프트웨어이다. 반디집과 같은 프로그램들과는 달리 광고 따위는 전혀 없고 딱 깔끔하게 파일 탐색(7zFM.exe)과 압축/압축해제(7zG.exe) 기능만 한다.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 포맷에 비교하여 약간 높은데, 속도 향상을 위해 매크로가 떡칠되어 코드가 길고 복잡하다. LZMA2의 전신인 LZMA는 등장 초기에도 당시의 RAR 포맷보다 높은 압축률을 보여주었으나 이후 RAR5 포맷에서 알고리즘을 개선하는 등 지속적으로 업데이트를 하는데도 7-Zip은 알고리즘의 업데이트가 없다시피 했었다. 압축 알고리즘은 무조건 압축률만을 따지는 게 아니라 압축 연산에 소요되는 시간과 압축률의 최적조건을 따져 가면서 개발하는 것인데, 7-Zip/LZMA는 처음부터 속도보다는 압축률에 초점을 두고 만들어졌기 때문에 압축률 개선은 그다지 손댈 것이 없었기 때문이다. 한동안 압축 알고리즘이 아닌 프로그램 자체(7-Zip File Manager)의 버그만 중점적으로 개선하다가 2012년 10월 26일 출시된 9.30 알파 버전부터 LZMA2 알고리즘이 기존의 LZMA를 대체하였다. 이후 버전들에도 레거시 포맷 지원을 위해 LZMA는 여전히 남아 있다. 그 밖에도 압축 파일의 암호화로 AES-256 Encryption을 지원하고 87개의 언어를 지원한다.
7-Zip은 오픈 소스 소프트웨어이긴 하지만, 출시 후 20여 년간 Windows 이외의 운영체제를 지원하지 않았다. 때문에 리눅스를 비롯한 다른 운영체제에서는 7-Zip 규격을 지원하는 제삼자 프로그램 "p7zip"이 7-Zip의 대체재로 활용되었다. 하지만 p7zip은 2016년 이후 업데이트가 없는 등 지원이 사실상 중단된 상태였고, 7-Zip에 비해 성능차이도 상당했다. 그러던 2021년, Windows용 첫 출시 22년 만에 갑자기 7-Zip의 공식 리눅스와 macOS용 버전이 등장하였다. 단 macOS와 리눅스용 7-zip은 CLI로만 사용할 수 있고, Windows용과 같은 GUI 탐색기는 제공되지 않는다. Windows 버전의 7z.exe같은 바이너리만 제공되는 것이다.
3. 장점
- 강력한 파일 탐색기
허접해 보이는 7-Zip의 탐색기는 외형과는 다르게 상당히 강력해서 홈페이지에서도 주요 기능 중 하나로 소개하고 있다. 이 프로그램의 GUI 버전 풀네임이 괜히 7-Zip File Manager가 아니다. Temporary Internet Files 아래의 Content.IE5 하위 폴더와 같이 윈도우 탐색기에서 마우스만으로는 절대 접근할 수 없고 경로를 직접 입력해야만 접근할 수 있는 폴더에 접근할 수 있는 것은 물론이고, 탐색기에서 만들고도 편집 불가능한 긴 이름 파일의 관리도 가능하다. 긴 이름 파일이란, 탐색기에서 파일명을 변경할 때 지나치게 길게 입력하면 변경된 파일명이 탐색기에서 보이기만 할 뿐, 삭제/수정/변경 등의 작업이 모두 불가능해지는 유령 파일을 말한다. 이런 파일은 일반적인 방법으로 접근할 수 없어서[3] 대부분의 탐색기 호환 프로그램으로는 제어가 불가능하므로 이러한 오류를 전문으로 교정하는 유틸리티를 이용해야 한다. 이뿐만 아니라 EXE 내부의 리소스, ISO 내부의 부팅 파일, 분할 압축 파일 일 부분의 내용, VHD 등의 가상 하드 디스크 파일 등등 어마어마하게 많은 포맷의 내부 데이터를 쉽게 확인할 수 있다. 압축 파일 안에 있는 압축 파일의 내용도 별도로 압축을 풀거나 새 창을 열 필요 없이 열람할 수 있다.
autorun.inf의 기능을 악용하는 악성코드인 오토런 바이러스 감염으로 이동식 디스크 안의 파일들이 보이지 않는 상황일 때 7-Zip 탐색기로 찾아 들어가면 보이는데, 이 파일들을 압축해서 다른 경로에 풀어 주면 복구가 되기도 한다. 이는 단순히 바이러스가 원본 폴더와 파일에 숨김 속성을 걸어서 보이지 않았던 것이 7-Zip으로 압축했다가 해제하는 과정에서 파일 속성이 풀렸기 때문이고, 7-Zip은 숨김 파일 속성을 무시하므로 정상적으로 내용물이 보인 것 뿐이다. 이는 오토런 바이러스가 치료된 것이 아니므로 파일을 되찾고 나서 그대로 방치하면 절대 안 되고, 반드시 백신으로 제대로 치료해야 한다.
명령줄 옵션을 이용해 파일 또는 폴더를 대상으로 개별 항목 혹은 전체 묶음의 체크섬을 계산하는 기능이 있다. 별도의 프로그램이 필요 없을 정도로 많은 종류의 알고리즘을 지원하고 기능도 충실해서 MD5나 CRC 등의 일치 여부를 확인할 때 7zip만 가지고도 충분히 사용할 수 있다.
- 솔리드 압축
7z 포맷은 솔리드 압축을 지원하는데, 이를 이용하면 압축 대상 파일들 중 바이너리(이진값)가 유사한 파일이 많을 경우 훨씬 더 높은 압축률을 보여준다. 특히 압축하려는 파일들이 개별 파일로는 압축이 잘 안 되지만, 저런 특성을 가지고 있는 경우 마법 수준의 차이가 나오기도 한다.
솔리드 압축의 단점으로는 압축된 파일들 중 하나만 압축 해제/수정하려고 할 땐 압축 파일 전체를 스캔해서 풀어야 한다. (수정시에는 전체를 해제한 뒤 해당 파일 수정 후 전체를 재압축) 때문에 시간이 오래 걸리게 된다. 또한 압축된 바이너리의 일부분이 훼손/변조되었을 때 훼손 지점 이후의 파일들을 전부 잃어버리게 된다.[4]
이건 솔리드라는 개념 자체의 한계이고, 7z은 널리 쓰이는 압축 포맷 중 유일하게 솔리드 블록 크기 조절을 통해 타협할 수 있으니 장점에 가깝다.[5]
- 64비트 및 멀티코어 지원
별도로 존재하는 64비트 버전을 사용하면 압축/해제 속도가 32비트 버전에 비해 더 빠르며, 멀티스레드 활용도가 좋아서 프로세서가 멀티코어라면 압축속도가 싱글코어 대비 확실하게 빨라진다. 자기 프로그램의 점유율만을 생각했는지 압축률, 속도, 안정성 모두 극히 떨어지는 ALZ라는 포맷을 만든 알집과 확실히 비교되는 부분이다.
그리고 자체적으로 CPU의 성능 벤치마크를 제공한다. 벤치마크하는 방법. 약 1분 정도 CPU 성능 벤치마크가 돌아간 뒤에 '전체 평가' 부분에 있는 GIPS 값을 비교하면 된다. 이를 이용하여 자신의 CPU 성능이 어느 정도 되는지 간단하게 알아볼 수 있다.
- 7z 포맷의 대중화
간판격인 7z 포맷의 대중화가 충분히 이루어져 있다는 것도 장점. 알집, 반디집을 비롯하여 대부분의 압축 프로그램들은 7z 포맷을 풀 수 있다. Self-extracting EXE로 만들 수도 있으며 분할 압축도 된다. 파일을 압축한 다음 압축 해제 기능이 있는 EXE 실행 파일에 통합하여, 압축 프로그램이 없는 컴퓨터에서도 실행만 하면 바로 압축을 풀 수 있게 만든 것.
LZMA 알고리즘이 복잡한 탓에 압축률을 높였을 땐 압축 속도가 많이 느리지만 압축 해제 속도는 상당히 빠르다. 다른 압축 포맷들의 해제 속도가 압축 속도와 비슷한 수준으로 느리다는 것을 보면 큰 장점이다. 또한 분할 압축 파일 중 열고자 하는 파일이 첫번째 파일이 아니어도 그냥 열어버리며 손상되거나 다운로드 중 끊긴 압축파일을 해제할 때도 복구 기능 사용 후 해제해야 하는 WinRAR와 달리 7-Zip은 그냥 해제해 버려서 온전치 못한 데이터의 일부라도 얻을 수 있다.
- 압축 파일 내부 파일명의 유니코드 지원
언어 코드페이지 등의 이유로 파일 이름 인식이나 압축 해제에 실패했을 때 WinRAR는 무조건 작업을 중단하고 중간까지 풀리던 파일들을 모두 삭제한다. 정확히는 WinRAR도 Command-line 명령을 쓰면 오류 발생 시 작업하던 파일을 삭제하지 않도록 조치할 수는 있는데 복잡하고 번거롭다. 반면 7-Zip은 인식되지 않는 문자들[6]을 밑줄 등으로 변환해서 해제하는 것을 기본으로 작동한다. 7-Zip은 파일명을 유니코드로 기록하고 해제할 때는 유니코드로 기록된 파일명을 운영체제의 문자셋에 맞춰 변환하며 해제한다. 압축 해제에 실패했을 경우에도 해제되던 부분까지는 그대로 남겨두기 때문에 분할 압축된 하나의 큰 파일의 경우 일부를 미리 확인할 때 유용하다. 또한 WinRAR는 압축 풀기 수행 시 필수적으로 임시 폴더에다가 임시 파일로 생성해가며 해제하지만 7-Zip은 압축 해제 위치에 압축이 풀리는 파일 자체의 크기를 늘려 가며 해제하므로 디스크의 여유 공간이 부족할 때 유용하다. 또한 이런 특징 덕분에 HDD일 경우 단편화 문제에서도 7-Zip이 유리하다.
- 파일 이름 암호화 기능
압축 파일 내부의 파일명을 암호화할 수 있기 때문에 보안 면에서도 zip보다 7z이 낫다. 대부분의 메일 서비스들은 바이러스 유포 방지를 위해 cpl, exe와 같은 특정 확장자의 파일을 필터링한다(예시: 네이버 메일과 Gmail에서의 첨부 파일 형식 차단). 해당 파일들을 zip으로 압축하는 경우 암호가 걸려 있어도 메일 서비스가 파일 헤더를 열어 내용을 분석한 후 필터링해버릴 수 있지만, 7z의 경우 암호 압축을 하게 되면 파일명을 분석할 수 없어 전송할 수 있다. 스토리지나 메일 서비스를 경유한 데이터 전송 시, 압축 파일의 내용을 열어보는 것 자체가 거슬린다면 7z가 좋은 선택이 될 수 있다. 반디집의 경우 7z로 암호 압축을 하면 기본적으로 파일명까지 암호화하지만 7-Zip에서 암호 압축하는 경우 파일명 암호화 여부를 선택할 수 있어 '파일 이름 암호화'에 체크하고 압축해야 한다.
4. 단점
- 전무한 오류 정정 기능
성능을 위해 오류 정정 기능[7]이 전혀 없어서 압축 파일에 작은 이상이라도 생기면 안에 들어있는 데이터가 그대로 쓰레기가 된다는 단점이 있다. 요즘 시대에 그런 게 왜 필요하냐면, 대량의 데이터를 취급하는 파일 호스팅이나 웹하드 서비스에서 회선상의 문제로 인해 간혹 업로드하는 파일의 일부가 깨져서 손상된 채로 올라올 때가 있는데, 이것이 없으면 업로더가 파일에 이상이 있음을 스스로 깨닫고 다시 올려 주기를 바라는 수밖에 없기 때문이다. 물론 이런 일이 자주 발생하는 것은 아니므로 일종의 보험 같은 기능이다. 그래서 해시 체크를 한다거나 1bit라도 용량절감이 더 중요하다면 7-zip이 낫다. 실제로도 rar 포맷 대신 7z 포맷을 이용해서 트래픽 부담을 최소화하는 배포자들도 많다. 그리고 토렌트는 파일 조각마다 해시 체크를 수행하므로 파일이 손상되었을 때는 해당 조각을 자동으로 다시 받는다. 토렌트로 손상된 파일을 받는 경우는 애초에 손상된 파일이 공유된 것이다.
- 마우스의 앞으로 가기/뒤로 가기 버튼 인식 불가
마우스 왼쪽에 앞으로 가기와 뒤로 가기 버튼이 달려 있는 마우스의 경우 7-Zip 탐색기에서는 이 물리적 버튼이 전혀 작동하지 않는다. 7-Zip의 강력한 탐색 기능을 생각해보면 꽤나 아쉬운 단점이다.
5. 관련 문서
[21.01+] 21.01 버전부터 지원한다.[21.02+] 21.02 버전부터 지원한다.[3] 구형 (파일) 시스템에서는 마우스를 파일에 갖다대고 우클릭만 해도 블루스크린이 뜨는 경우도 있다.[4] RAR은 recovery record를 통해 복구 가능성이 있지만 이 기능이 없는 7zip은 훼손에 약하다.[5] 128 MB, 256 MB와 같은 식으로 솔리드로 압축할 크기 한계를 정할 수 있다. 반디집은 고급 압축 설정에서 설정할 수 있다. 반면에 EGG(알집)은 on/off만 가능. RAR은 솔리드 불록을 크기로 지정하지는 못하지만, 일정 파일 갯수 단위로 솔리드 블록을 재설정할 수 있다. (-s<N> 스위치) 멀티 뷸륨으로 분할 압축 할 때 분할된 볼륨별로 솔리드 불록을 재성정할 수도 있다. (-sv 스위치) 이 기능을 CLI가 아닌 GUI에서 사용하려면 압축시 대화창의 option탭에서 'Additional switches'란에 직접 타이핑해 넣어야 한다.[6] Windows에서 지원하지 않는
\
, :
, $
같은 예약 문자들[7] rar의 recovery record, recovery volume