XZ 아카이브 형식
XZ는 주로 단일 파일 압축에 사용되는 고압축 아카이브 형식으로, 탁월한 압축 효율성과 오픈 소스 호환성을 제공합니다. XZ Utils의 일부로 개발된 이 형식은 합리적인 압축 해제 속도를 유지하면서 높은 압축 비율을 달성하는 LZMA2 압축 알고리즘을 사용하는 것으로 알려져 있습니다. XZ 아카이브는 특히 Linux와 같은 Unix 계열 운영 체제에서 소프트웨어 패키지 배포에 널리 사용됩니다.
일반 XZ 아카이브 정보
XZ 아카이브는 저장 및 배포를 위한 파일 크기를 줄이는 데 중점을 두고 효율적인 압축을 제공하도록 설계되었습니다. 이 형식은 사전 압축과 엔트로피 코딩을 결합한 LZMA2 알고리즘을 사용하므로 대용량 파일을 압축하는 데 매우 효과적입니다. XZ 아카이브에는 일반적으로 단일 압축 파일이 포함되어 있지만 tar와 같은 다른 도구와 결합하여 전체 디렉터리를 압축할 수 있습니다. XZ 형식은 특히 소프트웨어 및 시스템 업데이트 패키징의 표준이 된 Linux 생태계에서 소프트웨어 배포, 데이터 백업 및 보관에 자주 사용됩니다.
XZ 역사 정보
- 2005년: XZ 형식은 이전 LZMA 형식의 보다 효율적인 후속 버전을 만드는 것을 목표로 하는 XZ Utils 프로젝트의 일부로 개발을 시작했습니다.
- 2009년: XZ Utils가 공식적으로 출시되어 고압축 요구 사항에 대한 새로운 표준으로 XZ 형식이 도입되었습니다.
- 2010년: XZ는 Linux 커뮤니티에서 인기를 얻기 시작하여 빠르게 소프트웨어 패키지 및 시스템 아카이브 압축에 선호되는 형식이 되었습니다.
- 2011년: Debian 및 Arch Linux를 포함한 주요 Linux 배포판은 XZ를 패키지 저장소의 기본 압축 형식으로 채택하기 시작했습니다.
- 2014년: XZ의 사용 범위가 Linux를 넘어 확장되어 크로스 플랫폼 소프트웨어 배포, 특히 높은 압축률이 필요한 응용 프로그램에 널리 사용되었습니다.
- 2020: XZ는 특히 효율적인 압축이 중요한 환경에서 소프트웨어 패키징, 데이터 저장 및 배포에 널리 사용됩니다.
XZ 아카이브의 구조
XZ 아카이브 형식은 단일 파일 압축을 위해 설계되었으며 간단한 구조를 사용하여 높은 압축률을 달성합니다. XZ 아카이브의 구조에 대한 개요는 다음과 같습니다.
- 헤더: 헤더에는 형식 버전, 플래그 및 사용된 선택적 확장을 포함하여 XZ 아카이브에 대한 메타데이터가 포함됩니다. 또한 데이터 무결성에 대한 체크섬이 있음을 나타냅니다.
- 압축 데이터 스트림: XZ 아카이브의 핵심은 압축 데이터 스트림입니다. 이 섹션에는 LZMA2 알고리즘을 사용하여 압축된 실제 파일 데이터가 포함되어 있습니다. 데이터 스트림은 블록으로 나누어져 효율적인 압축 및 압축 해제가 가능합니다. 각 블록은 독립적으로 압축을 풀 수 있어 아카이브가 부분적으로 손상된 경우에도 데이터를 복구하는 데 도움이 됩니다.
- 바닥글: 바닥글에는 아카이브의 무결성을 확인하는 CRC32 체크섬이 포함되어 있습니다. 또한 압축된 데이터 스트림의 끝을 표시하고 빠른 액세스를 위해 블록 인덱스와 같은 추가 정보를 포함할 수 있습니다.
XZ 압축 방법
XZ 형식은 주로 높은 압축률과 합리적인 압축 해제 속도로 잘 알려진 LZMA2 압축 알고리즘을 사용합니다. XZ와 관련된 압축 방법을 자세히 살펴보겠습니다.
- LZMA2: 이것은 XZ 아카이브에서 사용되는 기본이자 유일한 압축 방법입니다. LZMA2는 LZ77 알고리즘을 기반으로 하며 고급 엔트로피 코딩을 통합하여 대용량 파일을 압축하는 데 매우 효율적입니다. 조정 가능한 압축 설정을 제공하므로 사용자는 필요에 따라 압축 속도나 비율의 우선순위를 지정할 수 있습니다.
- 필터: LZMA2 외에도 XZ는 파일 크기를 더욱 줄이기 위해 압축 전에 적용할 수 있는 다양한 선택적 필터를 지원합니다. 여기에는 작고 반복되는 변경 사항이 있는 데이터를 압축하는 데 유용한 델타 인코딩과 특정 명령을 보다 압축 가능한 형식으로 변환하여 실행 가능한 코드의 압축을 최적화하는 BCJ(Branch/Call/Jump)가 포함됩니다.
- CRC32 및 SHA-256 체크섬: XZ 아카이브는 압축 방법 자체는 아니지만 무결성 검사를 위해 CRC32 체크섬을 사용하고 선택적으로 향상된 데이터 확인을 위해 SHA-256을 지원하여 압축된 데이터가 손상되거나 변조되지 않았는지 확인합니다.
.xz 지원되는 작업
Aspose.Zip은 .xz 아카이브 작업에 대한 포괄적인 지원을 제공하므로 압축 파일을 보다 쉽게 관리할 수 있습니다. 할 수 있는 작업은 다음과 같습니다.
- 전체 추출: 원본 콘텐츠의 무결성과 구조를 유지하면서 .xz 아카이브에서 모든 파일을 쉽게 추출합니다.
- 선택적 추출: .xz 아카이브 내의 특정 파일을 대상으로 하여 파일 이름이나 기타 기준에 따라 정확한 데이터 복구 또는 선택적 압축 해제가 가능합니다.
- 데이터 압축: 효율적인 LZMA2 압축 방법을 활용하여 파일 및 디렉터리에서 .xz 아카이브를 생성하여 파일 크기를 크게 줄입니다.
- 사용자 정의 압축 설정: 압축 수준과 기타 매개변수를 조정하여 압축 속도와 파일 크기 사이의 균형을 맞추고 특정 요구 사항에 맞게 프로세스를 조정합니다.
.XZ 파일의 구조
.xz 파일 형식은 주로 데이터 압축 및 패키징에 사용됩니다. 높은 압축률을 달성하기 위해 LZMA2 알고리즘을 사용합니다. .xz 아카이브의 구조에 대한 개요는 다음과 같습니다.
스트림 헤더:
- 매직 바이트: 처음 6바이트(FD 37 7A 58 5A 00)는 파일을 .xz 아카이브로 식별합니다.
- 스트림 플래그: 블록 크기 및 압축 옵션과 같은 세부 정보가 포함됩니다.
블록 헤더:
- 블록 크기: 뒤에 오는 블록의 크기를 나타냅니다.
- 압축 방법: 사용되는 알고리즘을 지정합니다(보통 LZMA2).
- 필터 체인: 압축 전이나 후에 적용된 추가 필터를 자세히 설명합니다.
압축된 데이터 블록:
- 데이터: LZMA2 알고리즘을 이용하여 압축된 실제 데이터입니다.
- CRC32: 압축된 데이터의 무결성을 확인하는 데 사용되는 체크섬입니다.
색인 섹션:
- 인덱스 데이터: 각 블록에 대한 오프셋과 압축되지 않은 크기를 제공하여 압축된 스트림 내에서 임의 액세스를 허용합니다.
- 인덱스 CRC32: 인덱스 섹션의 무결성을 보장합니다.
스트림 바닥글:
- 스트림 플래그: 유효성 검사를 위해 헤더에서 스트림 플래그를 반복합니다.
- 뒤로 크기: 파일의 역순회를 가능하게 하는 인덱스 섹션의 크기입니다.
- 매직 바이트: 파일은 .xz 아카이브의 끝을 나타내기 위해 2바이트 시퀀스(59 5A)로 끝납니다.
선택적 메타데이터:
- 일부 .xz 아카이브에는 사용자 정의 필터 또는 암호화와 같은 특수 기능이나 확장 기능에 대한 추가 메타데이터가 포함될 수 있습니다.
XZ 형식의 인기
.xz 파일 형식은 높은 압축률과 효율적인 리소스 사용으로 인해 특히 Linux 및 오픈 소스 커뮤니티에서 큰 인기를 얻었습니다. 소프트웨어 패키지 압축, 소스 코드 배포 및 대규모 데이터 세트 보관에 널리 사용됩니다. XZ Utils 도구 세트는 Linux, macOS 및 Windows를 포함한 다양한 플랫폼에서 .xz 파일을 생성, 추출 및 관리하기 위한 강력한 지원을 제공합니다. Windows 환경에서 ZIP이나 CAB 만큼 널리 채택되지는 않지만 .xz는 압축 효율성과 성능 간의 균형이 잘 잡혀 있어 개발자와 시스템 관리자가 선호하는 선택입니다. 또한 .xz는 Debian의 APT 및 Arch Linux의 Pacman과 같은 많은 패키지 관리 시스템에 통합되어 소프트웨어 배포 생태계에서의 역할을 더욱 확고히 합니다.
XZ 아카이브 사용의 예
이 섹션에서는 C# 및 Java를 사용하여 XZ 아카이브를 압축 및 압축 해제하는 방법을 보여주는 코드 예제를 제공합니다. 이 예제에서는 C#용 Aspose.Zip 및 내장된 XzArchive 클래스(Java 환경에 따라 다름)와 같은 라이브러리를 활용하여 XZ 파일과 상호 작용합니다.
Compress XZ File via C#
using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
{
archive.SetSource(source);
archive.Save(xzFile);
}
}
}
Open XZ Archive via C#
using (var archive = new XzArchive("data.bin.xz"))
{
archive.Extract("data.bin");
}
Compress XZ File via C#
try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
try (FileInputStream source = new FileInputStream("data.bin")) {
try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
archive.setSource(source);
archive.save(xzFile);
}
}
} catch (IOException ex) {
}
Open XZ Archive via Java
try (XzArchive archive = new XzArchive("data.bin.xz")) {
archive.extract("data.bin");
}
추가 정보
사람들이 물어봤어
1. .xz는 모든 운영 체제에서 지원됩니까?
.xz는 Linux 환경에서 가장 일반적으로 사용되지만 모든 주요 운영 체제에서 지원됩니다. XZ Utils와 같은 도구는 Windows 및 macOS에서 사용할 수 있으며 7-Zip 과 같은 크로스 플랫폼 도구도 지원합니다. .xz 파일.
2. XZ 파일을 사용하면 어떤 이점이 있나요?
XZ 파일은 높은 압축률, 시스템 리소스의 효율적인 사용, 플랫폼 간 호환성 등 여러 가지 장점을 제공합니다. 이는 일반적으로 대규모 데이터 세트 보관, 소프트웨어 패키지 배포 및 데이터 백업에 사용됩니다.
3. 여러 파일을 단일 .xz 아카이브로 압축할 수 있나요?
와 같은 형식과 달리 해야 합니다. ZIP 또는 TAR , .xz는 일반적으로 단일 파일을 압축하는 데 사용됩니다. 여러 파일을 압축하려면 먼저 Aspose.Zip API 를 사용하여 단일 파일로 보관하여 .tar 파일을 생성 그런 다음 .xz를 사용하여 아카이브를 압축하면 .tar.xz 파일이 생성됩니다.