XZ Utils

XZ Utils는 LZMA2 압축 알고리즘을 사용하여 파일을 압축하고 압축을 해제하는 데 사용되는 자유-오픈 소스 명령어 줄 도구 모음이다. 2005년경부터 개발되었으며, 주로 유닉스 계열 운영 체제에서 파일을 효율적으로 보관하고 전송하는 데 널리 활용된다. 높은 압축률과 데이터 무결성 검사 기능으로 인해 소프트웨어 패키징 및 시스템 아카이빙에 폭넓게 사용되고 있다.

특징 및 장점:

  • 고압축률: XZ Utils는 LZMA2 알고리즘을 기반으로 하여 gzip이나 bzip2와 같은 다른 인기 있는 압축 도구보다 훨씬 높은 압축률을 제공한다. 특히 대용량 파일에서 그 효과가 두드러진다.
  • LZMA2 알고리즘: LZMA2는 LZMA(Lempel-Ziv-Markov chain Algorithm)의 개선된 버전으로, 높은 압축률과 함께 스트리밍 압축/압축 해제를 지원하여 다양한 환경에서 유연하게 사용할 수 있다. 블록별 압축 및 멀티스레딩 지원을 통해 성능을 최적화할 수 있다.
  • 데이터 무결성 검사: 압축된 파일의 무결성을 보장하기 위해 CRC64(Cyclic Redundancy Check)를 사용하여 데이터 손상 여부를 감지한다.
  • 스트림 지원: 파일뿐만 아니라 데이터 스트림을 압축하고 해제할 수 있어 파이프(pipe)를 통해 다른 프로그램과 연동하기 용이하다.
  • 오픈 소스: XZ Utils는 LGPLv2.1 및 Public Domain 라이선스 하에 배포되어 누구나 자유롭게 사용, 수정, 재배포할 수 있다.

포함된 주요 도구: XZ Utils 패키지에는 다음과 같은 명령줄 도구들이 포함되어 있다.

  • xz: 주 압축 및 압축 해제 도구. 기본적으로 .xz 확장자를 가진 파일을 생성한다. 다양한 옵션을 통해 압축률, 메모리 사용량 등을 조절할 수 있다.
  • unxz: xz로 압축된 파일을 해제한다. xz -d와 동일하다.
  • lzma, unlzma: 구형 LZMA 형식과의 호환성을 위한 도구. .lzma 확장자를 가진 파일을 처리한다.
  • xzcat, lzcat: 압축된 파일의 내용을 압축 해제하여 표준 출력으로 내보내는 도구. 파일을 실제로 해제하지 않고 내용을 확인할 때 유용하다.
  • xzgrep, xzdiff, xzless, xzmore: 압축된 파일 내에서 텍스트 검색, 차이점 비교, 페이지별 보기 등을 가능하게 하는 유틸리티.

사용처: XZ Utils는 많은 리눅스 배포판에서 기본 압축 도구로 채택되어 있다. 특히 소프트웨어 패키지 관리(예: 데비안의 .deb, 아치 리눅스의 .pkg.tar.xz 형식의 아카이브)와 커널 이미지 압축 등 시스템 수준의 파일 관리에 광범위하게 사용된다. 작은 크기와 높은 압축 효율성 덕분에 임베디드 시스템에서도 선호된다. 또한, 백업 아카이브 및 일반적인 파일 압축 용도로도 널리 쓰인다.

최근 이슈: 2024년 3월, XZ Utils 라이브러리(liblzma)의 특정 버전(5.6.0 및 5.6.1)에서 원격 코드 실행을 가능하게 하는 백도어가 발견되어 전 세계적인 보안 경고를 불러일으켰다. 이 백도어는 OpenSSH 데몬과 같은 일부 시스템에서 악용될 수 있는 잠재적인 위협으로 식별되었으나, 신속한 탐지와 패치로 광범위한 피해는 예방되었다. 이 사건은 오픈 소스 소프트웨어 공급망 보안의 중요성을 부각시키는 계기가 되었다.

둘러보기

더 찾아볼 만한 주제