comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/man/ko/man1/xzcat.1 @ 68:5028fdace37b

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 16:23:26 -0400
parents
children
comparison
equal deleted inserted replaced
67:0e9998148a16 68:5028fdace37b
1 '\" t
2 .\" SPDX-License-Identifier: 0BSD
3 .\"
4 .\" Authors: Lasse Collin
5 .\" Jia Tan
6 .\"
7 .\" Korean translation for the xz-man
8 .\" Seong-ho Cho <darkcircle.0426@gmail.com>, 2023, 2024.
9 .\"
10 .\"*******************************************************************
11 .\"
12 .\" This file was generated with po4a. Translate the source file.
13 .\"
14 .\"*******************************************************************
15 .TH XZ 1 2024\-12\-30 Tukaani "XZ 유틸리티"
16 .
17 .SH 이름
18 xz, unxz, xzcat, lzma, unlzma, lzcat \- .xz 파일과 .lzma 파일을 압축 또는 압축 해제합니다
19 .
20 .SH 요약
21 \fBxz\fP [\fI<옵션>...\fP] [\fI<파일>...\fP]
22 .
23 .SH "명령 별칭"
24 \fBunxz\fP 명령은 \fBxz \-\-decompress\fP 명령과 동일합니다.
25 .br
26 \fBxzcat\fP 명령은 \fBxz \-\-decompress \-\-stdout\fP 명령과 동일합니다.
27 .br
28 \fBlzma\fP 명령은 \fBxz \-\-format=lzma\fP 명령과 동일합니다.
29 .br
30 \fBunlzma\fP 명령은 \fBxz \-\-format=lzma \-\-decompress\fP 명령과 동일합니다.
31 .br
32 \fBlzcat\fP 명령은 \fBxz \-\-format=lzma \-\-decompress \-\-stdout\fP 명령과 동일합니다.
33 .PP
34 파일 압축을 해제해야 하는 셸 스크립트를 작성할 때, \fBunxz\fP 와 \fBxzcat\fP 이름 대신 \fBxz\fP 명령과 적절한 인자
35 값(\fBxz \-d\fP 또는 \fBxz \-dc\fP)의 사용을 추천드립니다.
36 .
37 .SH 설명
38 \fBxz\fP는 \fBgzip\fP(1) 과 \fBbzip2\fP(1) 과 비슷한 명령행 문법을 지닌 범용 데이터 압축 도구입니다. 자체 파일
39 형식은 \fB.xz\fP 형식이나, LZMA 유틸리티에서 사용하는 예전 \fB.lzma\fP 형식과 형식 헤더가 없는 RAW 압축 스트림도
40 지원합니다. 게다가, \fBlzip\fP에서 활용하는 \fB.lz\fP 형식 압축 해제도 지원합니다.
41 .PP
42 각 \fI파일\fP 에 대한 \fBxz\fP 압축 또는 압축 해제는 선택 동작 모드에 따릅니다. \fI<파일>\fP 값이 주어졌거나
43 \fI<파일>\fP 값이 \fB\-\fP이면, \fBxz\fP 명령에서 표준 입력을 읽고 처리한 데이터를 표준 출력에 기록합니다.
44 \fBxz\fP 에서는 터미널에서 활용할 경우 압축 데이터를 표준 압축으로 기록하는 동작을 거절(오류를 출력하고 \fI<파일>\fP을
45 건너뜀)합니다. 이와 비슷하게, \fBxz\fP 유틸리티를 터미널에서 실행하면 표준 입력의 압축 데이터 읽기를 거절합니다.
46 .PP
47 \fB\-\-stdout\fP 을 지정하지 않는 한, \fB\-\fP가 아닌 \fI<파일>\fP을 원본 \fI<파일>\fP 이름에서
48 가져온 새 파일 이름으로 기록합니다:
49 .IP \(bu 3
50 압축할 때, 대상 파일 형식의 접미사(\fB.xz\fP or \fB.lzma\fP) 는 원본 파일 이름 뒤에 붙어 대상 파일이름이 됩니다.
51 .IP \(bu 3
52 압축 해제할 때, \fB.xz\fP, \fB.lzma\fP, \fB.lz\fP 접미사를 파일 이름에서 제거하고 대상 파일 이름을 알아냅니다.
53 \fBxz\fP에서는 \fB.txz\fP, \fB.tlz\fP 접미사도 인식하며, \fB.tar\fP 접미사로 치환합니다.
54 .PP
55 대상 파일이 이미 있으면, 오류를 나타내고 \fI<파일>\fP을 건너뜁니다.
56 .PP
57 표준 출력으로 기록하기 전에는, \fBxz\fP는 경고를 나타내며, 다음 조건에 만족할 경우 \fI<파일>\fP을 건너뜁니다:
58 .IP \(bu 3
59 \fI<파일>\fP이 일반 파일이 아닐 때. 심볼릭 링크는 따라가지 않기에, 일반 파일로 간주하지 않습니다.
60 .IP \(bu 3
61 \fI<파일>\fP이 하나 이상의 하드 링크일 떄.
62 .IP \(bu 3
63 \fI<파일>\fP에 setuid, setgid, 끈적이 비트 집합이 붙어있을 떄.
64 .IP \(bu 3
65 동작 모드를 압축으로 설정하고, \fI<파일>\fP은 대상 파일 형식의 접미사를 이미 붙였을 때(\fB.xz\fP 형식으로 압축하면
66 \&\fB.xz\fP 또는 \fB.txz\fP, \fB.lzma\fP 형식으로 압축하면 \fB.lzma\fP 또는 \fB.tlz\fP).
67 .IP \(bu 3
68 동작 모드를 압축 해제로 설정하고, \fI<파일>\fP에 지원 파일 형식 접미사(\fB.xz\fP, \fB.txz\fP, \fB.lzma\fP,
69 \&\fB.tlz\fP, \fB.lz\fP)를 붙이지 않았을 때.
70 .PP
71 \fI<파일>\fP 의 압축 또는 압축 해제를 성공하고 나면, \fBxz\fP는 소유자, 소유그룹, 권한, 접근 시각, 수정 시각
72 정보를 원본 \fI<파일>\fP에서 대상 파일로 그대로 복사합니다. 그룹 정보 복사에 실패하면, 권한을 수정하여 원본
73 \fI<파일>\fP에 접근 권한이 없는 사용자가 대상 파일로 접근하지 못하게 합니다. \fBxz\fP는 아직 접근 제어 목록이나
74 확장 속성 등의 기타 메타데이터를 복사하는 기능은 지원하지 않습니다.
75 .PP
76 대상 파일을 온전히 닫고 나면, \fB\-\-keep\fP 옵션을 지원하지 않았을 경우 원본 \fI<파일>\fP을 제거합니다. 원본
77 \fI<파일>\fP은 출력을 표준 출력으로 기록했거나 오류가 발생했을 경우 제거하지 않습니다.
78 .PP
79 \fBxz\fP 프로세스에 \fBSIGINFO\fP 시그널 또는 \fBSIGUSR1\fP 시그널을 보내면 표준 출력으로 진행 정보를 출력합니다. 표준
80 오류가 터미널일 경우일 경우에만 제한하며 \fB\-\-verbose\fP 옵션을 지정하면 진행 표시줄을 자동으로 나타냅니다.
81 .
82 .SS "메모리 사용"
83 \fBxz\fP 메모리 사용은 수백 킬로바이트로 시작하여 수 기가바이트까지 압축 설정에 따라 다릅니다. 압축 해제 프로그램이 필요로 하는
84 메모리 공간을 결정하는 파일 압축시에 설정 값을 활용합니다. 보통 압축 해제 프로그램은 파일을 만들 때, 압축 프로그램 메모리 사용량의
85 5% 에서 20% 정도 필요합니다. 예를 들면, \fBxz \-9\fP로 압축한 파일 압축 해제시 현재 65MiB 메모리 용량이 필요합니다.
86 여전하게도, 압축 해제시 수 기가 바이트의 메모리가 필요한 \fB.xz\fP 파일에도 가능한 이야기입니다.
87 .PP
88 특히 이전 시스템 사용자의 경우 메모리 사용량이 엄청나게 늘어나는 점에 짜증이 날 수 있습니다. 이런 불편한 상황을 피하기 위해,
89 \fBxz\fP에 기본적으로 비활성 상태인 내장 메모리 사용 제한 기능을 넣었습니다. 일부 운영체제에서 처리 중 메모리 사용을 제한하는
90 수단을 제공하긴 하지만, 여기에 의지하기에는 충분히 유연하지 않습니다(예를 들면, \fBulimit\fP(1)을 사용하면 가상 메모리를
91 제한하여 \fBmmap\fP(2)을 먹통으로 만듭니다).
92 .PP
93 메모리 사용 제한 기능은 \fB\-\-memlimit=\fP\fI<제한용량>\fP 명령행 옵션으로 사용할 수 있습니다. 종종
94 \fBXZ_DEFAULTS=\-\-memlimit=150MiB\fP와 같이 \fBXZ_DEFAULTS\fP 환경 변수를 설정하여 제한 기능을 켜는게 더
95 편합니다. \fB\-\-memlimit\-compress=\fP\fI<제한용량>\fP 옵션과
96 \fB\-\-memlimit\-decompress=\fP\fI<제한용량>\fP 옵션을 활용하여 압축 및 압축 해제시 별도로 한계 값을
97 설정할 수 있습니다. 이 두 가지 옵션의 \fBXZ_DEFAULTS\fP 환경 변수 밖에서의 사용은, \fBxz\fP를 단일 실행할 때 압축 및
98 압축 해제 동작을 동시에 수행하지 않으며, 앞서 언급한 두가지 옵션을 명령행에 입력하기에는
99 \fB\-\-memlimit=\fP\fI<제한용량>\fP(또는 \fB\-M\fP \fI<제한용량>\fP)이 더 짧기 때문에 별로 쓸모가
100 없습니다.
101 .PP
102 압축 해제시 메모리 사용 제한 지정 한계를 초과하면, \fBxz\fP 유틸리티에서 오류를 나타내며 파일 압축 해제는 실패합니다. 압축을
103 실행할 때 사용 제한 지정 한계를 넘어서면 \fBxz\fP에서는 설정 값을 줄여서 어쨌든 한계를 넘지 못하게
104 합니다(\fB\-\-format=raw\fP 옵션 또는 \fB\-\-no\-adjust\fP 옵션 사용시 제외). 설정 한계 값이 엄청 작지 않은 이상 이
105 방식대로 처리하면 어쨌든 실패하지 않습니다. 설정 값조정은 압축 래벨 사전 설정과 일치하지 않을 때 단계적으로 진행하는데, 이를테면,
106 \fBxz \-9\fP 명령 수행에 필요한 양보다 한계 값이 약간 작으면, 설정 값을 \fBxz \-8\fP에 못미치게 약간 줄여서 진행합니다.
107 .
108 .SS ".xz 파일 결합 및 패딩"
109 \&\fB.xz\fP 파일을 있는 그대로 합칠 수 있습니다. \fBxz\fP는 \fB.xz\fP 파일을 단독 파일일 때 처럼 압축해제합니다.
110 .PP
111 결합 부분과 마지막 부분 뒤에 패딩을 추가할 수 있습니다. 패딩은 널 바이트로 구성해야 하며 패딩 길이는 4바이트로 구성해야 합니다.
112 512 바이트 블록으로 파일 크기를 이루는 매체에 \fB.xz\fP 파일을 저장했을 경우에 요긴할 수 있습니다.
113 .PP
114 \&\fB.lzma\fP 파일 또는 원시 스트림의 경우 결합과 패딩을 허용하지 않습니다.
115 .
116 .SH 옵션
117 .
118 .SS "정수 접두사와 별도 값"
119 정수 인자값이 필요한 대부분 위치에서는, 큰 정수값을 나타내기 쉽게 하도록 추가 접미사를 지원합니다. 정수와 접미사 사이에 어떤 공백이
120 있으면 안됩니다.
121 .TP
122 \fBKiB\fP
123 1,024 (2^10) 배수 정수값. \fBKi\fP, \fBk\fP, \fBkB\fP, \fBK\fP, \fBKB\fP 단위를 \fBKiB\fP 동의어로 받아들입니다.
124 .TP
125 \fBMiB\fP
126 1,048,576 (2^20) 배수 정수값. \fBMi\fP, \fBm\fP, \fBM\fP, \fBMB\fP 단위를 \fBMiB\fP 동의어로 받아들입니다.
127 .TP
128 \fBGiB\fP
129 1,073,741,824 (2^30) 배수 정수값. \fBGi\fP, \fBg\fP, \fBG\fP, \fBGB\fP 단위를 \fBGiB\fP 동의어로
130 받아들입니다.
131 .PP
132 특수 값 \fBmax\fP는 옵션에서 지원하는 정수 최대 값을 나타낼 때 사용할 수 있습니다.
133 .
134 .SS "동작 모드"
135 여러 동작 모드를 보여드리겠습니다만, 마지막에 주어진 동작 모드로 동작합니다.
136 .TP
137 \fB\-z\fP, \fB\-\-compress\fP
138 압축합니다. 어떤 동작 모드 옵션도 지정하지 않고 다른 동작 모드를 명령행에 따로 지정하지 않았다면 이 동작 모드는 기본입니다(예:
139 \fBunxz\fP 는 \fB\-\-decompress\fP를 암시).
140 .IP ""
141 .\" The DESCRIPTION section already says this but it's good to repeat it
142 .\" here because the default behavior is a bit dangerous and new users
143 .\" in a hurry may skip reading the DESCRIPTION section.
144 After successful compression, the source file is removed unless writing to
145 standard output or \fB\-\-keep\fP was specified.
146 .TP
147 \fB\-d\fP, \fB\-\-decompress\fP, \fB\-\-uncompress\fP
148 .\" The DESCRIPTION section already says this but it's good to repeat it
149 .\" here because the default behavior is a bit dangerous and new users
150 .\" in a hurry may skip reading the DESCRIPTION section.
151 Decompress. After successful decompression, the source file is removed
152 unless writing to standard output or \fB\-\-keep\fP was specified.
153 .TP
154 \fB\-t\fP, \fB\-\-test\fP
155 압축 \fI<파일>\fP의 무결성을 시험해봅니다. 이 옵션은 압축 해제 데이터를 표준 출력으로 기록하는 대신 버린다는 점을
156 제외하고 \fB\-\-decompress \-\-stdout\fP과 동일합니다. 어떤 파일도 만들거나 제거하지 않습니다.
157 .TP
158 \fB\-l\fP, \fB\-\-list\fP
159 압축 \fI<파일>\fP 정보를 출력합니다. 압축 해제 출력을 내보내지 않으며, 어떤 파일도 만들거나 제거하지 않습니다. 이
160 조회 모드에서, 프로그램은 표준 입력 또는 기타 탐색 불가능한 원본에서 압축 데이터를 읽을 수 없습니다.
161 .IP ""
162 \fI<파일>\fP 기본 정보를 파일 당 한 줄 씩 기본으로 보여줍니다. 더 자세한 정보를 보려면 \fB\-\-verbose\fP
163 옵션을 사용하십시오. 더 자세한 정보는 \fB\-\-verbose\fP 옵션을 두번 사용하면 되지만, 추가 정보를 더 많이 가져오면서 탐색
164 횟수가 늘어나는 문제로 인해 느려질 수 있습니다. 세부 출력 너비는 80 문자를 초과하며, 예를 들어 출력을 파이핑한다면, 터미널이
165 충분히 너비가 넓지 못할 경우 \fBless\ \-S\fP 명령이 편리할 수 있습니다.
166 .IP ""
167 정확한 출력은 \fBxz\fP 버전과 다른 로캘에 따라 바뀔 수 있습니다. 기계 판독용 출력시 \fB\-\-robot \-\-list\fP 옵션을
168 사용합니다.
169 .
170 .SS "동작 수정자"
171 .TP
172 \fB\-k\fP, \fB\-\-keep\fP
173 입력 파일을 삭제하지 않습니다.
174 .IP ""
175 \fBxz\fP 5.2.6 부터는 이 옵션으로 입력 파일이 일반 파일을 참조하는 심볼릭 링크나 하나 이상의 하드 링크, 내지는 setuid,
176 setgid, 끈적이 비트 세트를 설정한 상태라도 압축하거나 압축을 풀 수 있습니다. setuid, setgid, 끈적이 비트는 대상
177 파일에 복사하지 않습니다. 이전 버전에서는 \fB\-\-force\fP 옵션을 지정했을 때만 가능했습니다.
178 .TP
179 \fB\-f\fP, \fB\-\-force\fP
180 이 옵션은 몇가지 동작에 영향을 줍니다:
181 .RS
182 .IP \(bu 3
183 대상 파일이 이미 있으면, 압축 또는 압축 해제 전 삭제합니다.
184 .IP \(bu 3
185 입력 파일이 일반 파일을 참조하는 심볼릭 링크나 하나 이상의 하드 링크, 내지는 setuid, setgid, 끈적이 비트 세트를 설정한
186 상태라도 압축 또는 압축 해제를 진행합니다. setuid, setgid, 끈적이 비트는 대상 파일에 복사하지 않습니다.
187 .IP \(bu 3
188 \fB\-\-decompress\fP \fB\-\-stdout\fP 옵션을 같이 사용하는 상황에서 \fBxz\fP 명령이 원본 파일의 형식을 알아내지 못할 때,
189 원본 파일의 사본을 표준 출력으로 보냅니다. 이렇게 하면 \fBxzcat\fP \fB\-\-force\fP 명령을 \fBxz\fP 명령으로 압축하지 않은
190 파일에 대해 \fBcat\fP(1) 을 사용하는 것처럼 사용할 수 있습니다. 참고로 나중에, \fBxz\fP에서 \fBxz\fP로 하여금 여러 형식의
191 파일을 표준 출력으로 복사하는 대신 압축을 해제하도록 새 압축 파일 형식을 지원할 예정입니다.
192 \fB\-\-format=\fP\fI<형식>\fP 옵션은 \fBxz\fP 명령에 단일 파일 형식만 압축 해제하도록 제한할 때 사용할 수
193 있습니다.
194 .RE
195 .TP
196 \fB\-c\fP, \fB\-\-stdout\fP, \fB\-\-to\-stdout\fP
197 파일 대신 표준 출력으로 압축 또는 압축 해제한 데이터를 기록합니다. \fB\-\-keep\fP를 생략했습니다.
198 .TP
199 \fB\-\-single\-stream\fP
200 처음 \fB.xz\fP 스트림만 압축 해제하며, 스트림에 뒤따라오는 나머지 입력 데이터는 조용히 무시합니다. 보통 뒤따라오는 쓰레기 값에
201 대해서는 \fBxz\fP 에서 오류를 나타냅니다.
202 .IP ""
203 \fBxz\fP는 \fB.lzma\fP 파일 또는 원시 스트림에서 온 하나 이상의 스트림에 대해 압축 해제동작을 취하지 않지만, 이 옵션을 사용하면
204 \fBxz\fP에서 \fB.lzma\fP 파일 또는 원시 스트림을 처리한 다음에 뒤따라오는 데이터를 무시하도록 합니다.
205 .IP ""
206 이 옵션은 동작 모드가 \fB\-\-decompress\fP 또는 \fB\-\-test\fP가 아니면 동작에 아무런 영향을 주지 않습니다.
207 .TP
208 \fB\-\-no\-sparse\fP
209 희소 파일을 만들지 않습니다. 기본적으로 일반 파일로 압축 해제할 경우 \fBxz\fP 에서는 압축 해제한 파일에 이진 0값이 길게 늘어질
210 경우 희소 배열 파일을 만들려고 합니다. 표준 출력의 내용 길이만큼 연결한 일반 파일로 기록할 때도 동작하며 희소 파일을 만드는 동안
211 아무런 문제가 나타나지 않게 각각의 추가 조건을 만족합니다. 희소 파일을 만들면 디스크 공간을 절약할 수 있으며 디스크 입출력을 줄여
212 압축 해제 속도를 올릴 수 있습니다.
213 .TP
214 \fB\-S\fP \fI.suf\fP, \fB\-\-suffix=\fP\fI.suf\fP
215 압축할 때, 대상 파일의 접두사를 \fB.xz\fP 또는 \fB.lzma\fP 대신 \fI.suf\fP로 사용하십시오. 표준 출력으로 기록하지 않고
216 원본 파일에 \fI.suf\fP 접두사가 붙어있으면, 경고를 나타내고 해당 파일을 건너뜁니다.
217 .IP ""
218 압축 해제할 때, \fI.suf\fP 접미사로 파일을 인식하기도 하고, \fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP,
219 \&\fB.lz\fP 접미사가 붙은 파일도 인식합니다. 원본 파일에 \fI.suf\fP 접미사가 붙어있으면, 해당 접미사를 제거하여 대상 파일 이름을
220 알아냅니다.
221 .IP ""
222 원시 스트림 압축 및 압축 해제시(\fB\-\-format=raw\fP) 원시 스트림에 기본 접미사가 없기 때문에, 표준 출력으로 기록하지 않는
223 한 접미사를 반드시 지정해야 합니다.
224 .TP
225 \fB\-\-files\fP[\fB=\fP\fI<파일>\fP]
226 \fI<파일>\fP에서 처리할 파일 이름을 읽습니다. \fI<파일>\fP을 생략하면 파일 이름은 표준 입력에서
227 불러옵니다. 파일 이름은 개행 문자로 끝나야 합니다. 대시 문자(\fB\-\fP)는 일반 파일 이름으로 취급하며 표준 입력을 의미하지
228 않습니다. 파일 이름을 명령행 인자로 지정하면, \fI<파일>\fP에서 파일 이름을 읽어들이기 전 해당 명령행 인자를 먼저
229 처리합니다.
230 .TP
231 \fB\-\-files0\fP[\fB=\fP\fI<파일>\fP]
232 각 파일 이름이 널 문자로 끝나야 한다는 점만 제외하면 \fB\-\-files\fP[\fB=\fP\fI<파일>\fP] 옵션과 동일합니다.
233 .
234 .SS "기본 파일 형식 및 압축 옵션"
235 .TP
236 \fB\-F\fP \fIformat\fP, \fB\-\-format=\fP\fI<형식>\fP
237 압축 또는 압축해제 파일 \fI<형식>\fP을 지정합니다:
238 .RS
239 .TP
240 \fBauto\fP
241 기본 값입니다. 압축할 때, \fBauto\fP는 \fBxz\fP의 기본 동작과 동일합니다. 압축을 해제할 때, 입력 파일 형식을 자동으로
242 찾습니다. 참고로 원시 스트림(\fB\-\-format=raw\fP)의 경우 자동으로 찾을 수 없습니다.
243 .TP
244 \fBxz\fP
245 \&\fB.xz\fP 파일 형식으로 압축하거나, 압축 해제시 \fB.xz\fP 파일만 받아들입니다.
246 .TP
247 \fBlzma\fP, \fBalone\fP
248 이전 \fB.lzma\fP 파일 형식으로 압축하거나, 압축 해제시 \fB.lzma\fP 파일만 받아들입니다. \fBalone\fP 대체 명령은 LZMA
249 유틸리티 하위 호환성을 목적으로 제공합니다.
250 .TP
251 \fBlzip\fP
252 압축 해제시 \fB.lz\fP 파일만 받아들입니다. 압축은 지원하지 않습니다.
253 .IP ""
254 \&\fB.lz\fP 형식 버전 0과 비확장 버전 1을 지원합니다. 버전 0파일은 \fBlzip\fP 1.3 이전에서만 만듭니다. 일반적이진 않지만
255 일부 파일의 경우 이 형식과 관련된 원본 패키지로 보관한 파일을 찾을 수도 있습니다. 개인적으로 이 형식으로 압축한 오래된 개인 파일을
256 가지고 있을 수도 있습니다. 형식 버전 0 압축 해제 지원은 \fBlzip\fP 1.18에서 제거했습니다.
257 .IP ""
258 \fBlzip\fP 1.4 이상에서는 버전 1형식의 파일을 만듭니다. 형식 버전 1로의 동기화 제거 마커 확장은 \fBlzip\fP 1.6에
259 추가했습니다. 이 확장은 거의 쓰지 않으며 \fBxz\fP 에서 조차도 지원하지 않습니다(손상된 입력 파일로 진단함).
260 .TP
261 \fBraw\fP
262 원시 스트림으로 압축하거나 압축을 해제합니다(헤더 없음). 고급 사용자 전용입니다. 원시 스트림을 디코딩하려면,
263 \fB\-\-format=raw\fP 옵션을 사용하고 분명하게 필터 체인을 지정하여 컨테이너 헤더에 필요한 정보를 저장하게 끔 해야합니다.
264 .RE
265 .TP
266 \fB\-C\fP \fI<검사방식>\fP, \fB\-\-check=\fP\fI<검사방식>\fP
267 무결성 검사 방식을 지정합니다. 검사 방식은 \fB.xz\fP 파일에 저장하며 압축 해제 데이터를 계산합니다. 이 옵션은 \fB.xz\fP
268 형식으로 압축할 때만 효력이 있습니다: \fB.lzma\fP 형식은 무결성 겁사를 지원하지 않습니다. 무결성 검사는 \fB.xz\fP 파일 압축을
269 풀었을 때에 검사합니다.
270 .IP ""
271 지원 \fI검사\fP 형식:
272 .RS
273 .TP
274 \fBnone\fP
275 어떤 경우에도 무결성 검사 계산을 수행하지 않습니다. 보통 바람직하지 못한 생각입니다. 데이터 무결성을 다른 방식으로라도 검증해야
276 하는 상황이면 쓸만할 수 있습니다.
277 .TP
278 \fBcrc32\fP
279 IEEE\-802.3 (이더넷)의 다항 연산으로 CRC32를 계산합니다.
280 .TP
281 \fBcrc64\fP
282 ECMA\-182의 다항식 연산으로 CRC64를 계산합니다. 이 동작이 기본 동작이기 때문에 CRC32가 깨진 파일을 찾을 때보다는 좀
283 낮은 편이며 속도 차이도 거의 없습니다.
284 .TP
285 \fBsha256\fP
286 SHA\-256 해시를 계산합니다. CRC32와 CRC64 보다는 좀 느립니다.
287 .RE
288 .IP ""
289 \&\fB.xz\fP 헤더 무결성은 항상 CRC32로 검증하빈다. 이를 바꾸거나 It is not possible to change or
290 disable it.
291 .TP
292 \fB\-\-ignore\-check\fP
293 압축 데이터를 압축해제할 경우 압축 데이터의 무결성 검증을 진행하지 않습니다. \fB.xz\fP 헤더의 CRC32 값은 그래도 여전히 보통
294 방식으로 검증합니다.
295 .IP ""
296 \fB이 옵션이 정확히 무슨 동작을 하는지 알기 전에는 사용하지 마십시오.\fP 이 옵션을 사용하는 타당한 이유로:
297 .RS
298 .IP \(bu 3
299 깨진 .xz 파일에서 데이터 복구를 시도합니다.
300 .IP \(bu 3
301 압축 해제 속도를 늘립니다. SHA\-256 또는 압축 파일에 들어간 그 무언가를 엄청 빨리 처리합니다. 다른 방식으로 파일 무결성을
302 검증해야 하는 목적이 아니라면 이 옵션을 사용하지 않는게 좋습니다.
303 .RE
304 .TP
305 \fB\-0\fP ... \fB\-9\fP
306 압축 사전 설정 수준을 선택합니다. 기본값은 \fB\-6\fP입니다. 다중 수준을 지정하면 가장 마지막 수준 옵션을 적용합니다. 개별 필터
307 체인을 이미 지정했다면, 압축 사전 설정 수준 값을 설정할 때 개별 필터 체인을 정리합니다.
308 .IP ""
309 사전 설정간 차이는 \fBgzip\fP(1)과 \fBbzip2\fP(1)을 사용할 때보다 더 비중을 차지합니다. 선택한 압축 설정은 압축 해제시
310 필요한 메모리 사용량을 셜정하므로 사전 설정 수준 값을 너무 높게 지정하면 RAM 용량이 적은 오래된 시스템에서 파일 압축 해제시 실패할
311 수 있습니다. 게다가, \fBgzip\fP(1) 과 \fBbzip2\fP(1)에서 처럼 종종 \fB모든 동작에 \-9를 몰래 활용하는건 바람직하지 않습니다\fP.
312 .RS
313 .TP
314 \fB\-0\fP ... \fB\-3\fP
315 동작이 빠른 사전 설정 부류입니다. \fB\-0\fP은 때로는 \fBgzip \-9\fP 명령보다 압축율이 훨씬 우수하면서도 더 빠릅니다. 더 큰
316 값은 보통 \fBbzip2\fP(1) 명령과 비교했을 떄 압축 결과가 압축 데이터에 따라 달라지더라도, 비교할 법한 속도 또는 더 나은
317 압축율을 보입니다.
318 .TP
319 \fB\-4\fP ... \fB\-6\fP
320 오래된 시스템에서 조차도 압축 해제 프로그램의 적절한 메모리 사용량을 보이면서 양호하거나 최적의 압축율을 보여줍니다. \fB\-6\fP 옵션은
321 압축 해제시 메모리 사용량이 16MiB 밖에 안되기 때문에 파일을 배포할 때 최적의 선택인 기본 값입니다. (\fB\-5e\fP 또는
322 \fB\-6e\fP도 역시 고려할 만합니다. \fB\-\-extreme\fP을 참고하십시오.)
323 .TP
324 \fB\-7 ... \-9\fP
325 \fB\-6\fP과 비슷하지만 압축 및 압축 해제시 요구 메모리 사용량이 더 높습니다. 압축 파일이 각각 8MiB, 16MiB, 32MiB
326 보다 클 경우에만 쓸만한 옵션입니다.
327 .RE
328 .IP ""
329 동일한 하드웨어에서, 압축 해제 속도는 압축한 데이터의 초당 정적 바이트 처리 수의 어림 평균입니다. 다시 말해, 압축율을 더 올리면,
330 압축 해제 속도도 역시 올라갑니다. 이는 곧 초당 비압축 데이터 출력 양이 달라질 수 있단 뜻입니다.
331 .IP ""
332 다음 표에 사전 설정 기능을 정리했습니다:
333 .RS
334 .RS
335 .PP
336 .TS
337 tab(;);
338 c c c c c
339 n n n n n.
340 Preset;DictSize;CompCPU;CompMem;DecMem
341 \-0;256 KiB;0;3 MiB;1 MiB
342 \-1;1 MiB;1;9 MiB;2 MiB
343 \-2;2 MiB;2;17 MiB;3 MiB
344 \-3;4 MiB;3;32 MiB;5 MiB
345 \-4;4 MiB;4;48 MiB;5 MiB
346 \-5;8 MiB;5;94 MiB;9 MiB
347 \-6;8 MiB;6;94 MiB;9 MiB
348 \-7;16 MiB;6;186 MiB;17 MiB
349 \-8;32 MiB;6;370 MiB;33 MiB
350 \-9;64 MiB;6;674 MiB;65 MiB
351 .TE
352 .RE
353 .RE
354 .IP ""
355 컬럼 설명:
356 .RS
357 .IP \(bu 3
358 DictSize는 LZMA2 딕셔너리 크기입니다. 압축 해제 파일의 크기보다 딕셔너리에서 사용하는 낭비 메모리 용량입니다. 실제로
359 필요하지 않은 \fB\-7\fP ... \fB\-9\fP 사전 설정값을 피해야 하는 적절한 이유이기도 합니다. \fB\-6\fP 이하에서는 소모 메모리 양이
360 충분히 적거나 따로 신경쓸 필요가 없습니다.
361 .IP \(bu 3
362 CompCPU는 압축 속도에 영향을 주는 LZMA2 설정의 단순화 표기 값입니다. 딕셔너리 크기는 속도에도 영향을 주기 때문에
363 CompCPU는 \fB\-6\fP ... \fB\-9\fP 수준값과 동일한데, 고수준 값은 여전히 조금 더 느려질 수 있습니다. 느려지는 만큼
364 압축율은 가능한 한 더 좋아집니다. \fB\-\-extreme\fP을 참고하십시오.
365 .IP \(bu 3
366 CompMem은 단일\-스레드 모드에서 필요한 압축 프로그램의 메모리 점유 용량입니다. \fBxz\fP 버전에 따라 다를 수 있습니다.
367 .IP \(bu 3
368 DecMem은 압축 해제 프로그램의 메모리 점유용량입니다. 이는 곧, 압축 해제 프로그램에서 필요한 메모리 사용량을 압축 설정에서
369 결정한다는 의미가 들어있습니다. 정확한 압축 해제 프로그램의 메모리 사용량은 LZMA2 딕셔너리 크기 보다는 조금 많지만 테이블의 값은
370 MiB 용량으로 완전히 반올림한 값입니다.
371 .RE
372 .IP ""
373 다중\-스레드 모드에서 필요한 메모리 용량은 단일\-스레드 모드보단 약간 더 많습니다. \fB\-\-block\-size\fP 기본값에 따라, 각
374 스레드에서는 3*3*딕셔녀리_크기 + 압축시_메모리용량 또는 압축_해제시_메모리용량 정도가 필요합니다. 예를 들면, 스레드 넷에 사전
375 설정 옵션 \fB\-6\fP을 사용한다면, 660\(en670 MiB 메모리 용량이 필요합니다.
376 .TP
377 \fB\-e\fP, \fB\-\-extreme\fP
378 기대하는 만큼의 좀 더 나은 압축율을 확보하려 선택한 압축 사전 설정 수준의 느린 변형 옵션을 사용하지만, 재수 없는 와중에 골로 가는
379 경우가 생기기도 합니다. 압축 해제 프로그램의 메모리 사용에는 영향을 주지 않지만, 압축 프로그램의 메모리 사용량은 \fB\-0\fP
380 \&... \fB\-3\fP 사전 설정 수준에서 약간 더 올라갈 뿐입니다.
381 .IP ""
382 4MiB와 8MiB 두 가지 딕셔너리 용량 설정이 있기 때문에 \fB\-3e\fP 와 \fB\-5e\fP 사전 설정을 (CompCPU 수치를 낮춰서)
383 각각 \fB\-4e\fP 와 \fB\-6e\fP 보다 약간 더 빠르게 설정할 수 있습니다. 이런 식으로 두 사전 설정이 동일하지 않습니다.
384 .RS
385 .RS
386 .PP
387 .TS
388 tab(;);
389 c c c c c
390 n n n n n.
391 Preset;DictSize;CompCPU;CompMem;DecMem
392 \-0e;256 KiB;8;4 MiB;1 MiB
393 \-1e;1 MiB;8;13 MiB;2 MiB
394 \-2e;2 MiB;8;25 MiB;3 MiB
395 \-3e;4 MiB;7;48 MiB;5 MiB
396 \-4e;4 MiB;8;48 MiB;5 MiB
397 \-5e;8 MiB;7;94 MiB;9 MiB
398 \-6e;8 MiB;8;94 MiB;9 MiB
399 \-7e;16 MiB;8;186 MiB;17 MiB
400 \-8e;32 MiB;8;370 MiB;33 MiB
401 \-9e;64 MiB;8;674 MiB;65 MiB
402 .TE
403 .RE
404 .RE
405 .IP ""
406 예를 들면, 8MiB 딕셔너리를 활용하는 네가지 사전 설정이 있다고 할 때, 빠른 순으로 설정을 나열하자면, \fB\-5\fP, \fB\-6\fP,
407 \fB\-5e\fP, \fB\-6e\fP 입니다.
408 .TP
409 \fB\-\-fast\fP
410 .PD 0
411 .TP
412 \fB\-\-best\fP
413 .PD
414 이 옵션은 \fB\-0\fP 과 \fB\-9\fP의 별칭으로 각각 오해할 수 있습니다. LZMA 유틸리티의 하위 호환성을 목적으로 제공합니다. 이
415 옵션 사용은 피하십시오.
416 .TP
417 \fB\-\-block\-size=\fP\fI<크기>\fP
418 \&\fB.xz\fP 형식으로 압축할 때, 입력 데이터를 \fI<크기>\fP 바이트 블록으로 입력 데이터를 쪼갭니다. 각각의 블록은
419 다중\-스레드 방식으로 처리할 수 있고 임의 접근 압축 해제 가능성을 제한할 수 있게 개별적으로 압축 처리합니다. 이 옵션은 보통
420 다중\-스레드 모드에서 기본 블록 크기를 지정할 때 사용하지만, 단일\-스레드 모드에서도 사용할 수 있습니다.
421 .IP ""
422 다중\-스레드 모드에서는 약 3배 용량의 \fI<크기>\fP 바이트만큼 각 스레드 별로 입출력 버퍼링용 공간을 할당합니다. 기본
423 \fI<크기>\fP는 LZMA2 딕셔너리 크기 또는 1MiB 중 가장 큰 쪽의 세 배입니다. 보통 적절한 값으로 LZMA2
424 딕셔너리 크기 또는 최소한 1MiB 용량의 2\(en4배입니다. LZMA2 딕셔너리 크기보다 작은 \fI<크기>\fP는 램의
425 소모적 사용 공간으로 할당하는데 LZMA2 딕셔너리 버퍼를 할당한 용량 크기 전체를 다 사용하지 않기 때문입니다. 다중\-스레드 모드에서
426 블록 크기는 블록 헤더에 저장하며, 이 크기 정보는 다중\-스레드 압축 해제시 필요합니다.
427 .IP ""
428 단일\-스레드 모드에서는 기본적으로 블록 쪼개기를 하지 않습니다. 이 옵션을 설정한다고 해서 메모리 사용에 영향을 주지는 않습니다.
429 블록 헤더에 크기 정보를 저장하지 않기 때문에 단일\-스레드 모드에서 만든 파일은 다중\-스레드 모드에서 만든 파일과 동일하지 않습니다.
430 크기 정보의 누락은 또한 \fBxz\fP에서 다중\-스레드 모드로 압축 해제를 진행할 수 없음을 의미하기도 합니다.
431 .TP
432 \fB\-\-block\-list=\fP\fI<항목>\fP
433 \&\fB.xz\fP 형식으로 압축할 때, 압축하지 않은 데이터로 부터 일정 간격 이후에 새 블록 처리를 시작합니다.
434 .IP ""
435 \fI<항목>\fP은 쉼표로 구분한 목록으로 지정합니다. 각 항목은 콜론 (\fB:\fP)으로 구분한 0부터 9까지의 추가 필터
436 체인 번호 값으로 이루어져 있으며, 압축하지 않은 데이터의 크기 값이 필요합니다. 항목을 생략하면(둘 이상의 쉼표 연속 표기) 이전
437 항목의 크기와 필터를 활용하겠다는 함축 의미를 넣을 수 있습니다.
438 .IP ""
439 입력 파일이 \fI<항목>\fP 크기의 합보다 크면, 마지막 항목을 파일의 끝까지 반복합니다. 특별히 \fB0\fP 값을 마지막
440 값으로 사용하여 파일 나머지 부분을 단일 블록으로 인코딩해야 한다는 의미를 나타낼 수도 있습니다.
441 .IP ""
442 \fB\-\-filters1=\fP\fI<필터>\fP \&...\& \fB\-\-filters9=\fP\fI<필터>\fP 옵션 조합으로
443 각 블록별 별도 필터 체인을 지정할 수 있습니다. 이 옵션은 1\(en9번 필터 체인을 지정합니다. 필터 체인 0번은 필터 체인을
444 지정하지 않았을 때와 동일한 기본 필터 체인으로 참조할 수 있습니다. 필터 체인 식별 번호는 비 압축 크기 앞에 콜론(\fB:\fP)을 붙여
445 사용할 수 있습니다. 예를 들면, \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP 옵션을
446 지정했을 경우 다음 규칙대로 블록을 만듭니다:
447 .RS
448 .IP \(bu 3
449 \fB\-\-filters1\fP 필터 체인에서는 2MiB 입력을
450 .IP \(bu 3
451 \fB\-\-filters3\fP 필터 체인에서는 2MiB 입력을
452 .IP \(bu 3
453 \fB\-\-filters2\fP 필터 체인에서는 4MiB 입력을
454 .IP \(bu 3
455 \fB\-\-filters2\fP 필터 체인에서는 4MiB 입력을
456 .IP \(bu 3
457 기본 필터 체인에서는 2MiB 입력을
458 .IP \(bu 3
459 입력이 끝나기 전의 모든 블록에는 기본 필터 체인과 4MiB 입력을 적용합니다.
460 .RE
461 .IP ""
462 인코더 블록 크기를 초과하는 크기 값을 지정하면(스레드 모드 기본값 또는 \fB\-\-block\-size=\fP\fI<크기>\fP
463 옵션으로 지정한 값), 인코더는 \fI<크기>\fP 지정 용량 범위는 유지하면서 추가 블록을 만듭니다. 예를 들면
464 \fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP 옵션을 지정하고
465 입력 파일을 80MiB 용량으로 전달하면, 각각 5, 10, 8, 10, 2, 10, 10, 4, 10, 10, 1 MiB 용량을
466 차지하는 블록 11개를 결과물로 내줍니다.
467 .IP ""
468 다중\-스레드 모드에서 블록 크기는 블록 헤더에 저장합니다. 단일\-스레드 모드에서는 저장하지 않기 때문에 인코딩 처리한 출력은
469 다중\-스레드 모드의 출력 결과물과는 다릅니다.
470 .TP
471 \fB\-\-flush\-timeout=\fP\fI<제한시간>\fP
472 압축할 때, 이전 데이터를 소거하고 다음 입력을 블록 단위로 더 읽는데 \fI<제한시간>\fP 밀리초(양의 정수값)가 지났을
473 경우, 대기중이던 모든 입력 데이터를 인코더에서 소거한 다음 출력 스트림에 전달합니다. 이런 동작은 네트워크로 스트리밍한 데이터를
474 \fBxz\fP로 압축할 때 쓸만합니다. \fI<제한시간>\fP 값을 적게 지정하면 적은 지연 시간에 데이터를 받아낼 수 있지만
475 \fI<제한시간>\fP 값을 크게 하면 압축율을 높일 수 있습니다.
476 .IP ""
477 이 기능은 기본적으로 꺼져있습니다. 이 옵션을 한번 이상 지정하면, 마지막 옵션의 값대로 동작합니다. 특별히
478 \fI<제한시간>\fP 값을 \fB0\fP으로 설정하면 이 설정을 완전히 끌 수 있습니다.
479 .IP ""
480 이 기능은 POSIX 시스템이 아닌 곳에서는 사용할 수 없습니다.
481 .IP ""
482 .\" FIXME
483 \fB이 기능은 여전히 시험중입니다\fP. 현재로서는, \fBxz\fP 버퍼링 처리 방식 때문에 \fBxz\fP의 실시간 스트림 압축 해제 기능 활용은
484 적절하지 않습니다.
485 .TP
486 \fB\-\-memlimit\-compress=\fP\fI<제한용량>\fP
487 압축 수행시 메모리 사용 한계를 지정합니다. 이 옵션을 여러번 지정하면 마지막 값을 취합니다.
488 .IP ""
489 압축 설정이 \fI<제한용량>\fP을 초과하면, \fBxz\fP는 설정 값의 하향 조정을 시도하여 한계 값을 더이상 넘치지 않게 하고
490 자동 조절을 끝냈다는 알림을 표시합니다. 조정은 다음 순서대로 진행합니다. 스레드 수를 줄입니다. 다중\-스레드 모드에서 스레드 하나의
491 할당 한계치가 \fI<제한용량>\fP을 넘으면 단일\-스레드 모드로 전환합니다. 그 다음 마지막으로 LZMA2 딕셔너리 크기를
492 줄입니다.
493 .IP ""
494 \fB\-\-format=raw\fP 또는 \fB\-\-no\-adjust\fP 미지정 상황에서 압축할 때, 압축 데이터 출력에 영향을 주지 않고 스레드
495 처리 수만 줄일 수 있습니다.
496 .IP ""
497 \fI<제한용량>\fP 값이 아래 설명한 조건에 맞지 않으면, 오류가 나타나고 \fBxz\fP 명령은 종료 상태 1번을 반환하며
498 빠져나갑니다.
499 .IP ""
500 \fI<제한용량>\fP 값은 여러 방식으로 지정할 수 있습니다:
501 .RS
502 .IP \(bu 3
503 \fI<제한용량>\fP 값은 바이트 용량 절대값입니다. 정수 값을 사용하되 \fBMiB\fP와 같은 접미사를 사용하는게 좋습니다.
504 예: \fB\-\-memlimit\-compress=80MiB\fP
505 .IP \(bu 3
506 \fI<제한용량>\fP 값은 총 물리 메모리(RAM) 용량의 백분율로 지정할 수도 있습니다. 다른 컴퓨터끼리 공유하는 셸
507 초기화 스크립트의 \fBXZ_DEFAULTS\fP 환경 변수에 값을 설정할 때 특히 쓸만합니다. 이런 방식으로 설정하면 시스템의 메모리 설치
508 용량에 따라 자동으로 늘어납니다. 예: \fB\-\-memlimit\-compress=70%\fP
509 .IP \(bu 3
510 \fI<제한용량>\fP 값은 \fB0\fP 기본값으로 설정하여 초기화할 수 있습니다. 현재로서는 \fI<제한용량>\fP
511 값이 \fImax\fP(최대) (메모리 사용 한계 없음) 인 상태와 동일합니다.
512 .RE
513 .IP ""
514 \fBxz\fP 32비트 버전에서는 몇가지 특별한 경우가 있습니다. \fI<제한용량>\fP 값이 \fB4020MiB\fP를 넘으면
515 \fI<제한용량>\fP을 \fB4020MiB\fP로 고정합니다. MIPS32에서는 \fB2000MiB\fP로 대신 고정합니다.
516 (\fB0\fP과 \fBmax\fP는 이 경우에 해당하지 않습니다. 압축 해제시 비슷한 기능은 없습니다.) 이 경우 32비트 실행 파일이
517 4GiB(MIPS32의 경우 2GiB) 주소 영역에 접근할 때 매우 용이하며, 다른 경우에는 원하는대로 문제를 일으키지 않습니다.
518 .IP ""
519 \fB메모리 활용\fP 섹션도 참고하십시오.
520 .TP
521 \fB\-\-memlimit\-decompress=\fP\fI<제한용량>\fP
522 압축 해제시 메모리 사용 한계 용량을 설정합니다. \fB\-\-list\fP 모드에도 영향을 줍니다. \fI<제한용량>\fP을 넘기지
523 않고서는 동작이 진행이 안될 경우, \fBxz\fP 에서는 오류를 나타내고 파일 압축 해제를 실패로
524 간주합니다. \fI<제한용량>\fP을 지정하는 가능한 방법에 대해서는
525 \fB\-\-memlimit\-compress=\fP\fI<제한용량>\fP 옵션을 참고하십시오.
526 .TP
527 \fB\-\-memlimit\-mt\-decompress=\fP\fI<제한용량>\fP
528 다중\-스레드 모드 압축 해제시 메모리 사용 한계 용량을 설정합니다. 스레드 수에 영향을 줄 수도 있습니다. \fBxz\fP에서 파일 압축
529 해제를 거부하게 하진 않습니다. \fI<제한용량>\fP 수치가 다중\-스레드로 처리하기에 너무 낮다면,
530 \fI<제한용량>\fP 값을 무시하고 \fBxz\fP 동작을 단일\-스레드 모드로 계속 진행합니다. 참고로
531 \fB\-\-memlimit\-decompress\fP 옵션도 사용하면, 단일\-스레드 모드와 다중\-스레드 모드 두 경우에 모두 적용하기에,
532 다중\-스레드 모드에 적용할 \fI<제한용량>\fP 값은 \fB\-\-memlimit\-decompress\fP에 설정하는 제한 값보다 더
533 크면 안됩니다.
534 .IP ""
535 다른 메모리 사용 용량 제한 옵션과는 달리, \fB\-\-memlimit\-mt\-decompress=\fP\fI<제한용량>\fP 옵션은
536 시스템별 기본 \fI<제한용량>\fP 값을 지닙니다. 현재 설정 값은 \fBxz \-\-info\-memory\fP 명령으로 확인해볼 수
537 있습니다.
538 .IP ""
539 이 옵션과 기본 값은 한계 값을 주지 않으면 스레드 기반 압축 해제 프로그램이 일부 입력 파일에 대해 정신나간 수준의 메모리 용량을
540 할당해서 동작이 끝나버릴 수 있습니다. 기본 \fI<제한용량>\fP이 시스템의 사양에 비해 낮다면,
541 \fI<제한용량>\fP 값을 자유롭게 올리시되, \fBxz\fP 에서 적은 스레드 수에도 메모리 공간 할당을 시도하는 만큼, 입력
542 파일에 적절한 수준으로 가용 RAM 용량을 넘는 큰 값을 설정하지 마십시오. 메모리나 스와핑 영역 공간이 줄어들면 압축해제 성능을
543 개선하지 못합니다.
544 .IP ""
545 \fI<제한용량>\fP 값을 지정하는 가능한 방법을 보려면
546 \fB\-\-memlimit\-compress=\fP\fI<제한용량>\fP 옵션을 참고하십시오. \fI<제한용량>\fP 값을
547 \fB0\fP으로 설정하면 \fI<제한용량>\fP 값이 시스템 지정 기본값으로 바뀝니다.
548 .TP
549 \fB\-M\fP \fI<제한용량>\fP, \fB\-\-memlimit=\fP\fI<제한용량>\fP, \fB\-\-memory=\fP\fI<제한용량>\fP
550 \fB\-\-memlimit\-compress=\fP\fI<제한용량>\fP
551 \fB\-\-memlimit\-decompress=\fP\fI<제한용량>\fP
552 \fB\-\-memlimit\-mt\-decompress=\fP\fI<제한용량>\fP 지정과 동일합니다.
553 .TP
554 \fB\-\-no\-adjust\fP
555 압축 출력 결과에 영향을 주는 설정을 조정하지 않고는 메모리 사용 용량 제한 조건이 맞지 않으면 오류를 표시하고 빠져나갑니다. 이
556 옵션은 \fBxz\fP가 다중\-스레드 모드에서 단일\-스레드 모드로 전환하고 LZMA2 딕셔너리 크기를 줄이는 동작을 막아줍니다. 심지어 이
557 옵션을 사용하면 메모리 사용 한계를 만족하도록 스레드 수를 줄여 압축 결과물 출력에 영향이 가지 않게 합니다.
558 .IP ""
559 원시 스트림(\fB\-\-format=raw\fP)을 만들 떄 자동 조정은 항상 꺼집니다.
560 .TP
561 \fB\-T\fP \fI<스레드수>\fP, \fB\-\-threads=\fP\fI<스레드수>\fP
562 활용할 작업 스레드 수를 지정합니다. \fI<스레드수>\fP 값을 \fB0\fP 값으로 설정하면, \fBxz\fP는 시스템에서 지원하는
563 최대 프로세서 스레드 수를 모두 확보합니다. 실제 스레드 수는 입력 파일이 주어진 설정대로 스레드 처리를 할 만큼 그렇게 크지 않을
564 경우, 내지는 더 많은 스레드를 사용했을 때 메모리 사용량 한계를 초과할 경우 \fI<스레드수>\fP 보다 적을 수 있습니다.
565 .IP ""
566 단일\-스레드와 다중\-스레드 압축 프로그램은 다른 출력 결과물을 냅니다. 단일\-스레드 압축 프로그램은 작은 파일 크기 결과물을 내놓지만,
567 다중\-스레드 압축 프로그램의 경우 다중\-스레드 압축 프로그램에서 내놓은 결과물은 다중\-스레드로만 압축을 해제할 수 있습니다.
568 \fI<스레드수>\fP를 \fB1\fP로 설정하면 단일\-스레드 모드를 사용합니다. \fI<스레드수>\fP를 \fB0\fP과 다른
569 값으로 설정하면, 시스템에서 실제로 하드웨어 스레드가 1개만 지원한다 하더라도, 다중\-스레드 압축 프로그램을 사용합니다. (\fBxz\fP
570 5.2.x에서는 이 경우 단일\-스레드 모드를 활용합니다.)
571 .IP ""
572 단일\-스레드로 다중\-스레드 모드를 사용하려면, \fI<스레드수>\fP를 \fB+1\fP로 설정하십시오. \fB+\fP 접두사는 \fB1\fP
573 이외의 값에는 영향을 주지 않습니다. 메모리 사용량 한계 설정은 \fBxz\fP을 \fB\-\-no\-adjust\fP 옵션을 쓰기 전까지는
574 단일\-스레드로 전환하게 합니다. \fB+\fP 접두사 지원은 \fBxz\fP 5.4.0에 추가했습니다.
575 .IP ""
576 자동 스레드 수를 요청했고 메모리 사용 한계를 지정하지 않았다면, 시스템에 맞게끔 가능한 스레드 수를 제한하는 기본 소프트 제한 값을
577 사용합니다. 스레드 수가 한개가 되면 무시하는 이런 개념이 소프트 제한이기에, \fBxz\fP로 하여금 압축 동작 및 압축 해제 동작 수행시
578 멈추지 않습니다. 이 가본 소프트 제한 값은 \fBxz\fP 실행 도중 다중\-스레드 모드에서 단일\-스레드 모드로 바뀌게 하지는 않습니다.
579 활성 제한 값은 \fBxz \-\-info\-memory\fP 명령으로 볼 수 있습니다.
580 .IP ""
581 현재 스레딩 처리 방식은 입력을 블록 단위로 쪼개고 각각의 블록을 독립적으로 압축하는 동작을 취합니다. 기본 블록 크기는 압축 수준에
582 따라 다르며 \fB\-\-block\-size=\fP\fI<크기>\fP 옵션으로 재지정할 수 있습니다.
583 .IP ""
584 스레드 압축 해제 방식은 여러 블록이 블록 헤더에 넣은 크기 정보와 함께 들어간 파일에만 동작합니다. 다중\-스레드 모드에서 압축한
585 충분히 큰 모든 파일은 이 조건에 만족하지만, 단일\-스레드 모드에서 압축한 파일은
586 \fB\-\-block\-size=\fP\fI<크기>\fP 옵션을 지정하더라도 조건에 만족하지 않습니다.
587 .IP ""
588 \fI스레드\fP 기본 값은 \fB0\fP입니다. \fBxz\fP 5.4.x 이전의 기본값은 \fB1\fP입니다.
589 .
590 .SS "개별 압축 필터 체인 설정"
591 개별 필터 체인은 사전 설정에 엮인 설정에 의존하는 대신 압축 설정을 세부적으로 하나하나 설정할 수 있게 합니다. 개별 필터 체인을
592 지정하면, 명령행에 앞서 지정한 사전 설정 옵션(\fB\-0\fP \&...\& \fB\-9\fP 과 \fB\-\-extreme\fP)은 무시합니다. 사전
593 설정 옵션을 하나 이상의 필터 체인 옵션 다음에 지정하면, 새 사전 설정을 취하며, 앞서 지정한 개별 필터 체인 옵션은 무시합니다.
594 .PP
595 필터 체인은 명령행 파이핑에 비교할 수 있습니다. 압축할 때, 압축하지 않은 입력을 첫번째 필터로 놓고, 출력 대상(이 있으면)을 다음
596 필터로 지정합니다. 최종 필터의 출력은 압축 파일로 기옥합니다. 체인의 최대 필터 수는 4이지만, 필터 체인상 필터 갯수는 보통
597 1~2개입니다.
598 .PP
599 수많은 필터가 필터 체인 상에서 제약점을 가지고 있습니다. 일부 필터는 체인의 마지막 필터로만 동작하며, 일부 다른 필터는 마지막이 아닌
600 필터로, 어떤 동작은 체인의 어떤 위치에든 둡니다. 필터에 따라, 이 제한은 필터 설계를 따르거나 보안 문제를 막기 위해 존재하기도
601 합니다.
602 .PP
603 개별 필터 체인은 두가지 방식으로 지정할 수 있습니다. \fB\-\-filters=\fP\fI<필터>\fP와
604 \fB\-\-filters1=\fP\fI<필터>\fP \&...\& \fB\-\-filters9=\fP\fI<필터>\fP 옵션으로
605 liblzma 필터 문자열 문법에 따라 한가지 옵션을 필터 체인 전체를 지정할 수 있습니다. 대신, 하나 이상의 개별 필터 옵션을
606 원하는 필터 체인 순서대로 지정할 수도 있습니다. 이 말인 즉슨, 개별 필터 옵션의 순서가 중요하단 뜻입니다! 원시 스트림을 디코딩할
607 때(\fB\-\-format=raw\fP), 압축했을 때 지정했던 필터와 같은 순서로 필터 체인을 지정해야 합니다. 전체 체인
608 옵션(\fB\-\-filters=\fP\fI<필터>\fP) 보다 우선 지정한 개별 필터 또는 사전 설정 옵션은 까먹을 수도 있습니다.
609 전체 체인 옵션 다음에 개별 필터를 지정할 경우 필터 체인의 동작을 무효로 합니다.
610 .PP
611 필터는 쉼표로 구분하는 필터별 \fI<옵션>\fP이 있습니다. \fI<옵션>\fP에 추가로 입력한 쉼표는
612 무시합니다. 모든 옵션 값에는 기본값이 있어, 값을 바꾸려면 지정해야합니다.
613 .PP
614 전체 필터 체인과 \fI<옵션>\fP을 보려면 \fBxz \-vv\fP (\fB\-\-verbose\fP 두 번)명령을 사용하십시오. 이
615 명령은 사전 설정이 사용하는 필터 체인 옵션도 볼 수 있습니다.
616 .TP
617 \fB\-\-filters=\fP\fI<필터>\fP
618 전체 필터 체인 또는 사전 설정을 단일 옵션으로 지정합니다. 각 필터는 공백 문자 또는 대시 문자 두번 입력(\fB\-\-\fP)으로
619 구분합니다. 셸 명령행에서 \fI필터\fP는 따옴표로 감싸서 단일 옵션으로 해석하도록 해야 합니다. \fI옵션\fP을 표기하려면 \fB:\fP 또는
620 \fB=\fP을 활용하십시오. 사전 설정 앞에 \fB\-\fP를 붙일 수 있고 0개 또는 하나 이상의 플래그를 붙일 수 있습니다. 유일하게
621 지원하는 플래그는 \fB\-\-extreme\fP과 동일한 \fBe\fP입니다.
622 .TP
623 \fB\-\-filters1\fP=\fI<필터>\fP ... \fB\-\-filters9\fP=\fI<필터>\fP
624 \fB\-\-block\-list\fP와 사용할 수 있는 추가 필터 체인을 최대 9개까지 지정합니다.
625 .IP ""
626 예를 들어 텍스트 파일과 실행 파일의 아카이브를 압축할 때 실행 부분에 BCJ 필터 체인을 사용하고 텍스트 부분은 LZMA2 필터를
627 사용할 수 있습니다.
628 .TP
629 \fB\-\-filters\-help\fP
630 \fB\-\-filters\fP와 \fB\-\-filters1=\fP\fI<필터>\fP \&...\&
631 \fB\-\-filters9=\fP\fI<필터>\fP 옵션의 사전 설정 필터와 개별 설정 필터 체인을 지정하는 방법을 설명하는 도움말
632 메시지를 출력하고 완전히 빠져나갑니다.
633 .TP
634 \fB\-\-lzma1\fP[\fB=\fP\fI<옵션>\fP]
635 .PD 0
636 .TP
637 \fB\-\-lzma2\fP[\fB=\fP\fI<옵션>\fP]
638 .PD
639 LZMA1 또는 LZMA2 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 마지막 요소로만 사용할 수 있습니다.
640 .IP ""
641 LZMA1은 고전 필터로, LZMA1만 지원하는 고전 \fB.lzma\fP 파일 형식에서만 지원합니다. LZMA2는 LZMA1의 업데이트
642 버전으로 LZMA1의 실질적 문제를 해결했습니다. \fB.xz\fP 형식은 LZMA2 필터를 사용하며 LZMA1 필터는 전적으로 지원하지
643 않습니다. 압축 속도와 압축율은 LZMA1과 LZMA2가 실질적으로 동일합니다.
644 .IP ""
645 LZMA1과 LZMA2는 동일한 \fI<옵션>\fP 집합을 공유합니다:
646 .RS
647 .TP
648 \fBpreset=\fP\fI<사전설정>\fP
649 LZMA1 또는 LZMA2의 모든 \fI<옵션>\fP을 \fI<사전설정>\fP으로
650 초기화합니다. \fI<사전설정>\fP 값은 정수 값으로 이루어져 있으며, 사전 설정에 변형을 줄 떄 단일 문자가 따라올 수도
651 있습니다. 정수 값은 \fB0\fP에서 \fB9\fP 까지이며, 명령행 옵션에서 \fB\-0\fP \&...\& \fB\-9\fP로 대응합니다. 변형 옵션으로
652 지원하는 문자는 현재 \fBe\fP 뿐이며, \fB\-\-extreme\fP에 대응합니다. \fI<사전설정>\fP 값을 지정하지 않으면,
653 LZMA1 또는 LZMA2 기본값을 사전 설정 \fB6\fP에서 가져온 \fI<옵션>\fP으로 취합니다.
654 .TP
655 \fBdict=\fP\fI<크기>\fP
656 딕셔너리(기록 버퍼) \fI<크기>\fP는 최근 처리한 비압축 데이터를 바이트 단위로 메모리에 얼마나 유지하는지 나타냅니다.
657 알고리즘은 비압축 데이터상 바이트 시퀀스(일치 항목) 반복 탐색을 시도하며, 해당 부분을 딕셔너리의 현재 참조로 치환합니다. 딕셔너리가
658 크면 일치하는 항목을 찾을 기회가 더 많아집니다. 따라서, 딕셔너리 \fI<크기>\fP를 더욱 크게 설정하면 압축율을 증가할
659 수는 있지만, 압축하지 않은 파일보다 딕셔너리가 크면 메모리 낭비율이 올라갑니다.
660 .IP ""
661 보통 딕셔너리 \fI<크기>\fP는 64KiB 에서 64MiB 정도 됩니다. 최소 4KiB 입니다. 압축시 최대 용량은 현재
662 1.5GiB(1536MiB)로 나타납니다. 압축 해제 프로그램에도 4GiB 미만으로 딕셔너리 크기를 이미 지원하며 4GiB 라는 수치는
663 LZMA1과 LZMA2 스트림 형식의 최대값입니다.
664 .IP ""
665 딕셔너리 \fI<크기>\fP와 검색기(\fImf\fP)는 LZMA1 또는 LZMA 인코더의 메모리 사용량을 함께 결정합니다.
666 동일한(또는 더 큰) 딕셔너리 \fI<크기>\fP가 데이터를 압축했을 때만큼 압축 해제할 떄 필요하기 때문에, 디코더의 메모리
667 사용량은 압축할 때의 딕셔너리 크기로 결정합니다. \fB.xz\fP 헤더에는 딕셔너리 \fI<크기>\fP를 2^\fIn\fP 또는
668 2^\fIn\fP + 2^(\fIn\fP\-1) 으로 저장하기에, 이 \fI<크기>\fP 값을 압축할 때 선호하는 편입니다. 다른
669 \fI<크기>\fP 값은 \fB.xz\fP 헤더에 저장할 때 반올림합니다.
670 .TP
671 \fBlc=\fP\fIlc\fP
672 리터럴 컨텍스트 비트 수를 지정합니다. 최소 값은 0이고 최대 값은 4입니다. 기본 값은 3입니다. 추가로, \fIlc\fP 값과
673 \fIlp\fP 값의 합은 4를 넘으면 안됩니다.
674 .IP ""
675 조건이 일치하지 않아 인코딩할 수 없는 모든 바이트는 리터럴로 인코딩합니다. 이 말인 즉슨, 간단히 8비트 바이트로서의 리터럴을 한번에
676 하나씩 인코딩합니다.
677 .IP ""
678 리터럴 코딩을 할 때 이전 비압축 바이트와 다음 바이트와의 관련성을 가진 가장 많은 \fIlc\fP 비트 수를 가정합니다. 예를 들면, 보통
679 영문 문장의 경우 대문자 다음에 종종 소문자가 오고, 소문자 다음에 다른 소문자가 따라옵니다. US\-ASCII 문자 세트에서는 가장 긴
680 비트 3개는 대문자에 대해 010, 소문자에 대해 011입니다. \fIlc\fP 값이 최소한 3이면, 리터럴 코딩시 비압축 데이터에 대해
681 이런 속성의 장점을 취할 수 있습니다.
682 .IP ""
683 (어쨌거나) 기본값 (3)은 보통 적절합니다. 최대 압축을 원한다면 \fBlc=4\fP 값을 시험해보십시오. 때로는 약간 도움이 되기도
684 하겠지만, 오히려 결과가 안좋을 수도 있습니다. 결과가 엄한 방향으로 간다면, \fBlc=2\fP 값도 시험해보십시오.
685 .TP
686 \fBlp=\fP\fIlp\fP
687 리터럴 위치 비트 수를 지정하빈다. 최소 값은 0이고 최대 값은 4입니다. 기본 값은 0입니다.
688 .IP ""
689 \fIlp\fP 값은 리터럴 인코딩 진행시 비압축 데이터 정렬 방식 고려에 영향을 줍니다. 정렬 방식에 대한 자세한 정보는 하단 \fIpb\fP를
690 참고하십시오.
691 .TP
692 \fBpb=\fP\fIpb\fP
693 위치 비트 수를 지정합니다. 최소 값은 0이며 최대 값은 4입니다. 기본값은 2입니다.
694 .IP ""
695 \fIpb\fP 값은 보통 압축하지 않은 데이터에 어떤 정렬 방식을 고려하느냐에 영향을 줍니다. 기본적으로 4바이트
696 정렬(2^\fIpb\fP=2^2=4)을 의미하는데, 이보다 더 나은 추측 값이 없어서 종종 최적의 선택으로 간주합니다.
697 .IP ""
698 정렬 상태를 알지 못할 경우, \fIpb\fP 설정 값이 파일 크기를 조금 줄일 수 있습니다. 예를 들면, 텍스트 파일이 단일 바이트 단위로
699 정돈된 상태(US\-ASCII, ISO\-8859\-*, UTF\-8)라면, \fBpb=0\fP 설정 값으로 압축율을 조금 개선할 수 있습니다.
700 UTF\-16 텍스트의 경우, \fBpb=1\fP 설정 값이 좋은 선택입니다. 정렬 바이트가 3 바이트 같은 홀수 바이트일 경우,
701 \fBpb=0\fP 설정 값이 최적의 선택일지도 모릅니다.
702 .IP ""
703 가정 정렬을 \fIpb\fP 값과 \fIlp\fP 값으로 조정하긴 하지만, LZMA1과 LZMA2는 여전히 16바이트 정렬 방식으로 선호합니다.
704 LZMA1 또는 LZMA2로 종종 압축하는 파일 형식이라고 하면 고려해볼만 합니다.
705 .TP
706 \fBmf=\fP\fImf\fP
707 일치 검색기는 인코더 속도, 메모리 사용량, 압축율에 주된 영향을 줍니다. 보통 해시 체인 검색기는 이진 트리 검색기보다 빠르긴
708 합니다. 기본 값은 \fI<사전설정>\fP에 따라 다릅니다. 0은 \fBhc3\fP을, 1\(en3은 \fBhc4\fP를, 나머지는
709 \fBbt4\fP를 활용합니다.
710 .IP ""
711 다음 검색 필터를 지원합니다. 메모리 사용 공식은 \fIdict\fP 값이 2의 승수일 경우 실제에 가까운 근사치입니다.
712 .RS
713 .TP
714 \fBhc3\fP
715 2바이트, 3바이트 해싱 체인
716 .br
717 \fInice\fP 최소값: 3
718 .br
719 메모리 사용:
720 .br
721 \fIdict\fP * 7.5 (조건: \fIdict\fP <= 16 MiB);
722 .br
723 \fIdict\fP * 5.5 + 64 MiB (조건: \fIdict\fP > 16 MiB)
724 .TP
725 \fBhc4\fP
726 2바이트, 3바이트, 4바이트 해싱 체인
727 .br
728 \fInice\fP 최소값: 4
729 .br
730 메모리 사용:
731 .br
732 \fIdict\fP * 7.5 (조건: \fIdict\fP <= 32 MiB);
733 .br
734 \fIdict\fP * 6.5 (조건: \fIdict\fP > 32 MiB)
735 .TP
736 \fBbt2\fP
737 2바이트 해싱 이진 트리
738 .br
739 \fInice\fP 최소값: 2
740 .br
741 메모리 사용: \fIdict\fP * 9.5
742 .TP
743 \fBbt3\fP
744 2바이트, 3바이트 해싱 이진트리
745 .br
746 \fInice\fP 최소값: 3
747 .br
748 메모리 사용:
749 .br
750 \fIdict\fP * 11.5 (조건: \fIdict\fP <= 16 MiB);
751 .br
752 \fIdict\fP * 9.5 + 64 MiB (조건: \fIdict\fP > 16 MiB)
753 .TP
754 \fBbt4\fP
755 2바이트, 3바이트, 4바이트 해싱 이진 트리
756 .br
757 \fInice\fP 최소값: 4
758 .br
759 메모리 사용:
760 .br
761 \fIdict\fP * 11.5 (조건: \fIdict\fP <= 32 MiB);
762 .br
763 \fIdict\fP * 10.5 (조건: \fIdict\fP > 32 MiB)
764 .RE
765 .TP
766 \fBmode=\fP\fI<모드>\fP
767 압축 \fI<모드>\fP 값은 일치 검색기에서 생산하는 데이터 분석 방식을 지정합니다. 지원하는 \fI<모드>\fP는
768 \fBfast\fP와 \fBnormal\fP 입니다. 기본값은 \fI<사전설정>\fP값 0\(en3에 대해 \fBfast\fP,
769 \fI<사전설정>\fP값 4\(en9에 대해 \fBnormal\fP입니다.
770 .IP ""
771 보통 \fBfast\fP는 해시 체인 검색기에서 사용하며 \fBnormal\fP은 이진 트리 검색기에서 사용합니다. 이 동작은 또한
772 \fI<사전설정>\fP 값이 할 일이기도 합니다.
773 .TP
774 \fBnice=\fP\fInice\fP
775 일치하는 nice 길이를 지정합니다. 최소한 \fInice\fP 바이트 정도 일치하면, 알고리즘이 가능한 최선의 부분을 찾는 동작을
776 멈춥니다.
777 .IP ""
778 \fInice\fP 값은 2\(en273 바이트입니다. 값이 클 수록 속도 면에서는 손해를 보겠지만 압축율은 더욱 올라갑니다. 기본 값은
779 \fI<사전설정>\fP값에 따라 다릅니다.
780 .TP
781 \fBdepth=\fP\fI<깊이>\fP
782 일치 검색기에서의 최대 검색 깊이를 지정합니다. 기본값은 특별한 값 0으로 지정하며, 이 값으로 압축 프로그램이 \fImf\fP 와
783 \fInice\fP간 적절한 \fI<깊이>\fP 값을 결정합니다.
784 .IP ""
785 적절한 해시 체인 \fI<깊이>\fP 값은 이진 트리에서 4\(en100 그리고 16\(en1000 입니다. 상당히 큰 값을
786 \fI<깊이>\fP 값으로 사용하면 일부 파일에 대해 인코더가 매우 느리게 동작할 수가 있습니다. 압축 시간이 너무 오래걸려서
787 동작을 중간에 끊을 준비가 되지 않은 이상 \fI<깊이>\fP 설정 값은 1000을 넘지 않게하십시오.
788 .RE
789 .IP ""
790 원시 스트림(\fB\-\-format=raw\fP)을 디코딩할 때, LZMA2는 딕셔너리 \fI<크기>\fP만 필요합니다. LZMA1는
791 \fIlc\fP, \fIlp\fP, \fIpb\fP 값이 모두 필요합니다.
792 .TP
793 \fB\-\-x86\fP[\fB=\fP\fI<옵션>\fP]
794 .PD 0
795 .TP
796 \fB\-\-arm\fP[\fB=\fP\fI<옵션>\fP]
797 .TP
798 \fB\-\-armthumb\fP[\fB=\fP\fI<옵션>\fP]
799 .TP
800 \fB\-\-arm64\fP[\fB=\fP\fI<옵션>\fP]
801 .TP
802 \fB\-\-powerpc\fP[\fB=\fP\fI<옵션>\fP]
803 .TP
804 \fB\-\-ia64\fP[\fB=\fP\fI<옵션>\fP]
805 .TP
806 \fB\-\-sparc\fP[\fB=\fP\fI<옵션>\fP]
807 .TP
808 \fB\-\-riscv\fP[\fB=\fP\fI<옵션>\fP]
809 .PD
810 브랜치/호출/점프(BCJ) 필터를 필터 체인에 추가합니다. 이 필터는 필터 체인의 비종결 필터로만 사용할 수 있습니다.
811 .IP ""
812 BCJ 필터는 머신 코드의 상대 주소를 절대 주소로 변환합니다. 데이터 크기를 바꾸지는 않지만 LZMA2에서 \fB.xz\fP 파일을
813 0\(en15% 정도 줄여주게 하는 중복성이 늘어납니다. BCJ 필터는 언제든 뒤집을 수 있어, 데이터에 적절하지 않은 BCJ 필터
814 형식을 활용하면, 그냥 가만히 두면 압축율이 약간 떨어지게 한다 하더라도, 데이터를 잃을 수가 있습니다. BCJ 필터는 굉장히 빠르며
815 메모리 공간을 적게 활용합니다.
816 .IP ""
817 이 BCJ 필터에는 압축율 관련 몇가지 문제가 있습니다:
818 .RS
819 .IP \(bu 3
820 실행 코드가 들어있는 몇가지 파일 형식(예: 목적 파일, 정적 라이브러리, 리눅스 커널 모듈)의 경우 필터 값으로 채운 명령 주소가
821 있습니다. 여기 BCJ 필터의 경우 파일의 압축율을 떨어뜨리는 주소 변환을 수행합니다.
822 .IP \(bu 3
823 BCJ 필터를 아카이브에 적용하면, BCJ 필터를 사용하지 않았을 때보다 압축율이 떨어질 수가 있습니다. 예를 들면, 유사하거나 동일한
824 실행 파일 여럿이 있으면 필터를 사용하여 파일을 덜 비슷하게 만들어 압축율이 떨어지게 합니다. 동일한 아카이브 파일에서 비 실행 파일의
825 내용에 대해서도 비슷한 일이 벌어질 수 있습니다. 실제로 하나는 BCJ 필터를 걸고 하나는 제외하여 각 경우에 대해 어떤 경우가 결과가
826 우수한 지 살펴보겠습니다.
827 .RE
828 .IP ""
829 다른 명령 세트는 다른 정렬 상태에 놓여있습니다. 실행 파일은 필터가 제대로 동작하게 하려면 입력 데이터에 있는 이 값의 배수로
830 정돈해야합니다.
831 .RS
832 .RS
833 .PP
834 .TS
835 tab(;);
836 l n l
837 l n l.
838 필터;정렬;참고
839 x86;1;32\-bit 또는 64\-bit x86
840 ARM;4;
841 ARM\-Thumb;2;
842 ARM64;4;4096 바이트 정렬이 가장 좋습니다
843 PowerPC;4;빅엔디안 전용
844 IA\-64;16;Itanium
845 SPARC;4;
846 RISC\-V;2;
847 .TE
848 .RE
849 .RE
850 .IP ""
851 BCJ 필터를 사용한 데이터는 LZMA2로 보통 압축하기 때문에 LZMA2 옵션을 선택한 BCJ 필터의 정렬기준에 맞추도록 설정하면
852 압축율을 좀 더 개선할 수 있습니다. 예를 들면:
853 .RS
854 .IP \(bu 3
855 IA\-64 필터는 16\-바이트 정렬 방식으로 동작하기에 LZMA2 필터에 \fBpb=4,lp=4,lc=0\fP 옵션(2^4=16)을 주는게
856 좋습니다.
857 .IP \(bu 3
858 RISC\-V 코드에는 16\-비트 압축 명령(C 확장) 적재 여부에 따라 2\-바이트 또는 4\-바이트 정렬 방식을 채택합니다. 16\-비트
859 명령을 사용하면, \fBpb=2,lp=1,lc=3\fP 또는 \fBpb=1,lp=1,lc=3\fP 옵션 값 사용이 바람직합니다. 16\-비트 명령이
860 없다면, \fBpb=2,lp=2,lc=2\fP 옵션 값을 활용하는게 좋습니다. "RVC"가 "Flags"행에 나타나는지 확인할 때
861 \fBreadelf \-h\fP 명령을 사용할 수 있습니다.
862 .IP \(bu 3
863 ARM64는 항상 4\-바이트 정렬 방식을 택하기에 \fBpb=2,lp=2,lc=2\fP 옵션 값을 활용하는게 좋습니다.
864 .IP \(bu 3
865 x86 필터는 예외입니다. x86 실행 파일을 압축할 경우에는 보통 LZMA2 기본 옵션 값(\fBpb=2,lp=0,lc=3\fP)을 그대로
866 사용하는게 좋습니다.
867 .RE
868 .IP ""
869 모든 BCJ 필터는 동일한 \fI옵션\fP을 지원합니다:
870 .RS
871 .TP
872 \fBstart=\fP\fI<오프셋>\fP
873 상대 주소와 절대 주소를 변환할 때 사용할 시작 \fI<오프셋>\fP을 지정합니다. \fI<오프셋>\fP에는 필터
874 정렬 배수여야 합니다(상단 테이블 참조). 기본값은 0입니다. 실제로 기본값이 낫습니다. 개별 \fI<오프셋>\fP 지정
875 값은 거의 쓸모가 없습니다.
876 .RE
877 .TP
878 \fB\-\-delta\fP[\fB=\fP\fI<옵션>\fP]
879 필터 체인에 델타 필터를 추가합니다. 델타 필터는 필터 체인에서 마지막에 지정하지 않은 필터로만 사용할 수 있습니다.
880 .IP ""
881 현재로서는 바이트 단위 단순 델타계산 결과만 보여줍니다. 예를 들면, 압축하지 않은 비트맵 그림 또는 압축하지 않은 PCM 오디오를
882 압축할 때 쓸만합니다. 그러나 특별한 목적으로 활용하는 알고리즘은 델타 + LZMA2 보다 더 나은 결과를 가져다 주기도 합니다.
883 이는 특히 오디오의 경우 맞는 이야기인데, \fBflac\fP(1)의 경우 더 빠르고 우수한 압축율을 보여줍니다.
884 .IP ""
885 지원 \fI옵션\fP:
886 .RS
887 .TP
888 \fBdist=\fP\fI<차이>\fP
889 바이트 단위 델터 계산 \fI<차이>\fP를 지정합니다. \fI<차이>\fP값은 1\(en256 이어야합니다. 기본
890 값은 1입니다.
891 .IP ""
892 예를 들어, \fBdist=2\fP 옵션과 A1 B1 A2 B3 A3 B5 A4 B7 입력 값을 주면, 출력 값은 A1 B1 01 02 01
893 02 01 02 입니다.
894 .RE
895 .
896 .SS "기타 옵션"
897 .TP
898 \fB\-q\fP, \fB\-\-quiet\fP
899 경고 및 알림을 끕니다. 두 번 지정하면 오류 메시지 표시도 끕니다. 이 옵션은 종료 상태에 영향을 주지 않습니다. 경고 표시를
900 끄더라도, 종료 상태에서는 여전히 경고가 나타났음을 알려줍니다.
901 .TP
902 \fB\-v\fP, \fB\-\-verbose\fP
903 출력 내용이 많아집니다. 표준 오류를 터미널에 연결했다면 \fBxz\fP는 진행 표시를 나타냅니다. \fB\-\-verbose\fP를 두번 지정하면
904 더 많은 내용을 표시합니다.
905 .IP ""
906 진행 표시에서는 다음 정보를 나타냅니다:
907 .RS
908 .IP \(bu 3
909 입력 파일의 크기를 알고 있을 경우 완료 백분율. 파이프 처리시에는 백분율을 나타낼 수 없습니다.
910 .IP \(bu 3
911 산출 압축 데이터 용량 (압축) 또는 소모 공간 용량 (압축 해제).
912 .IP \(bu 3
913 비압축 데이터 소모 용량 (압축) 또는 산출 용량 (압축 해제).
914 .IP \(bu 3
915 압축 데이터 산출 용량을 비압축 데이터 처리 용량으로 나누어 계산한 압축율.
916 .IP \(bu 3
917 압축 또는 압축 해제 속도. 초당 비압축 데이터 소모량(압축) 또는 산출 용량(압축 해제)를 측정한 값입니다. \fBxz\fP에서 파일
918 처리를 시작한 몇 초 후 나타납니다.
919 .IP \(bu 3
920 경과 시간 형식은 M:SS 또는 H:MM:SS 입니다.
921 .IP \(bu 3
922 추산 여분 시간은 \fBxz\fP가 파일을 처리하기 시작한 이후 입력 파일의 크기를 알고 몇 초가 지난 후에야 보여줍니다. 시간은 콜론
923 문자를 사용하지 않고 덜 자세한 형식으로, 예를 들면, 2분 30초 와 같은 형식으로 보여줍니다.
924 .RE
925 .IP ""
926 표준 오류가 터미널이 아니라면 \fB\-\-verbose\fP는 \fBxz\fP에서 파일 이름, 압축 크기, 압축 해제 용량, 압축율, 그리고
927 가능하다면 파일을 압축 또는 압축 해제한 후 표준 오류로 속도와 걸린 시간을 나타내도록 합니다. 속도와 걸린 시간 정보는 동작을
928 처리하는데 최소한 몇초 정도 소요했을 경우에만 들어갑니다. 동작이 끝나지 않았다면, 이를테면 사용자의 중단 요청이 있었을 경우 입력
929 파일의 크기를 알고 있을 때 압축 백분율 정보도 들어갑니다.
930 .TP
931 \fB\-Q\fP, \fB\-\-no\-warn\fP
932 경고로 알릴 만한 상황을 만났다 하더라도 종료 상태 2번을 설정하지 않습니다. 이 옵션은 출력 수준에 영향을 주지 않기 때문에,
933 \fB\-\-quiet\fP 옵션과 \fB\-\-no\-warn\fP 옵션을 경고 표시를 막고 종료 상태를 바꾸지 않을 목적으로 사용합니다.
934 .TP
935 \fB\-\-robot\fP
936 머신에서 해석할 형식으로 메시지를 나타냅니다. liblzma 대신 \fBxz\fP를 활용하려는 다양상 스크립트로서의 프론트엔드를 쉽게
937 작성하도록 하기 위함입니다. 이 옵션을 지정한 출력은 \fBxz\fP 릴리스가 어떻게 되든 안정 버전이란 의미입니다. 자세한 내용은
938 \fB로봇 모드\fP 섹션을 참고하십시오.
939 .TP
940 \fB\-\-info\-memory\fP
941 압축 및 압축 해제시 물리 메모리 용량 (RAM), \fBxz\fP에서 파악하는 프로세서 스레드 갯수, 메모리 사용량 한계를 파악하기 쉬운
942 형식으로 나타내고 무사히 나갑니다.
943 .TP
944 \fB\-h\fP, \fB\-\-help\fP
945 보통 사용하는 옵션을 설명하는 도움말 메시지를 출력한 후, 완전히 빠져나갑니다.
946 .TP
947 \fB\-H\fP, \fB\-\-long\-help\fP
948 \fBxz\fP의 모든 기능을 설명하는 도움말 메시지를 출력한 후, 완전히 빠져나갑니다
949 .TP
950 \fB\-V\fP, \fB\-\-version\fP
951 \fBxz\fP와 liblzma 버전 번호를 가독 형식으로 출력합니다. 기계 해석 가능 형식을 가져오려면 \fB\-\-version\fP 앞에
952 \fB\-\-robot\fP을 지정하십시오.
953 .
954 .SH "로봇 모드"
955 로봇 모드는 \fB\-\-robot\fP 옵션으로 동작합니다. \fBxz\fP 출력을 다른 프로그램에서 해석하기 쉽게 해줍니다. 현재로서는
956 \fB\-\-robot\fP 옵션은 \fB\-\-list\fP, \fB\-\-filters\-help\fP, \fB\-\-info\-memory\fP, \fB\-\-version\fP
957 옵션하고만 사용할 수 있습니다. 앞으로는 압축 및 압축 해제 동작에 대해서도 지원합니다.
958 .
959 .SS "목록 모드"
960 \fBxz \-\-robot \-\-list\fP 명령은 탭으로 구분한 출력 형태를 활용합니다. 모든 행의 첫번째 컬럼에는 해당 행에서 찾을 수
961 있는 정보의 형식을 나타냅니다:
962 .TP
963 \fB이름\fP
964 이 행은 항상 파일 목록 시작 부분의 첫번째 줄에 있습니다. 이 행의 두번째 컬럼에 파일 이름이 들어있습니다.
965 .TP
966 \fB파일\fP
967 이 행에는 \fB.xz\fP 파일의 전반적인 정보가 들어있습니다. 이 행은 항상 \fB이름\fP 행 다음에 있습니다.
968 .TP
969 \fB스트림\fP
970 이 행 형식은 \fB\-\-verbose\fP 옵션을 지정했을 때만 사용합니다. \fB.xz\fP 파일의 \fB스트림\fP 행 수만큼 나타납니다.
971 .TP
972 \fB블록\fP
973 이 행 형식은 \fB\-\-verbose\fP 옵션을 지정했을 때만 사용합니다. \fB.xz\fP 파일의 블록 수만큼 \fB블록\fP 행이 나타납니다.
974 \fB블록\fP 행은 모든 \fB스트림\fP 행 다음에 나타납니다. 다른 형식의 행이 끼어들지는 않습니다.
975 .TP
976 \fB요약\fP
977 이 행 형식은 \fB\-\-verbose\fP 옵션을 두번 지정했을 때만 사용합니다. 이 행은 모든 \fB블록\fP 행 다음에 출력합니다.
978 \fB파일\fP 행과 비슷하게, \fB요약\fP 행에는 \fB.xz\fP 파일의 전반적인 정보가 담겨있습니다.
979 .TP
980 \fB총계\fP
981 이 행은 목록 출력의 가장 마지막에 항상 나타납니다. 총 갯수와 크기를 나타냅니다.
982 .PP
983 \fB파일\fP 행 컬럼:
984 .PD 0
985 .RS
986 .IP 2. 4
987 파일 스트림 갯수
988 .IP 3. 4
989 스트림의 블록 총 갯수
990 .IP 4. 4
991 파일 압축 크기
992 .IP 5. 4
993 파일 압축 해제 크기
994 .IP 6. 4
995 예를 들면, \fB0.123\fP과 같은 압축율 입니다. 비율이 9.999라면, 대시 문자 3개 (\fB\-\-\-\fP)를 비율 값 대신 나타냅니다.
996 .IP 7. 4
997 쉼표로 구분한 무결성 검사 이름 목록입니다. \fBNone\fP, \fBCRC32\fP, \fBCRC64\fP, \fBSHA\-256\fP 문자열을 알려진
998 검사 형식으로 사용합니다. 알 수 없는 검사 형식에 대해서는 \fBUnknown\-\fP\fIN\fP을 사용하며, 여기서 \fIN\fP은 (한 두자리)
999 정수형 숫자값으로 이루어진 검사 ID 입니다.
1000 .IP 8. 4
1001 파일의 스트림 패딩 총 길이
1002 .RE
1003 .PD
1004 .PP
1005 \fB스트림\fP 행 컬럼:
1006 .PD 0
1007 .RS
1008 .IP 2. 4
1009 스트림 번호 (첫 스트림은 1번)
1010 .IP 3. 4
1011 스트림의 블록 총 갯수
1012 .IP 4. 4
1013 압축 시작 오프셋
1014 .IP 5. 4
1015 비압축 시작 오프셋
1016 .IP 6. 4
1017 압축 크기 (스트림 패딩 미포함)
1018 .IP 7. 4
1019 압축 해제 용량
1020 .IP 8. 4
1021 압축율
1022 .IP 9. 4
1023 무결성 검사 이름
1024 .IP 10. 4
1025 스트림 패딩 길이
1026 .RE
1027 .PD
1028 .PP
1029 \fB블록\fP 행 컬럼:
1030 .PD 0
1031 .RS
1032 .IP 2. 4
1033 이 블록이 들어간 스트림 갯수
1034 .IP 3. 4
1035 스트림 시작 부분의 블록 번호 (첫번째 블록은 1번)
1036 .IP 4. 4
1037 파일 시작 부분의 블록 번호
1038 .IP 5. 4
1039 파일 시작 부분의 압축 시작 오프셋
1040 .IP 6. 4
1041 파일 시작 부분의 비압축 시작 오프셋
1042 .IP 7. 4
1043 총 블록 압축 크기 (헤더 포함)
1044 .IP 8. 4
1045 압축 해제 용량
1046 .IP 9. 4
1047 압축율
1048 .IP 10. 4
1049 무결성 검사 이름
1050 .RE
1051 .PD
1052 .PP
1053 \fB\-\-verbose\fP를 두 번 지정하면, 추가 컬럼을 \fB블록\fP 행에 넣습니다. \fB\-\-verbose\fP 단일 지정시에는 이 정보를 볼
1054 때 탐색을 여러번 수행해야 하기 때문에 실행 과정이 느려질 수 있어서 나타내지 않습니다:
1055 .PD 0
1056 .RS
1057 .IP 11. 4
1058 16진수 무결성 검사값
1059 .IP 12. 4
1060 블록 헤더 크기
1061 .IP 13. 4
1062 블록 플래그: \fBc\fP는 압축 크기가 현재 값임을 나타내고, \fBu\fP는 압축 전 원본 크기가 현재 값임을 나타냅니다. 플래그를 설정하지
1063 않았다면, 문자열 길이를 유지할 목적으로 대시 \fB\-\fP 를 대신 나타냅니다. 새 플래그는 나중에 문자열 끝 부분에 추가할 예정입니다.
1064 .IP 14. 4
1065 블록에 압축 해서 넣은 데이터의 실제 츠기 (블록 헤더, 블록 패딩, 검사 필드 제외)
1066 .IP 15. 4
1067 이 \fBxz\fP 버전에서 이 블록의 압축을 해제할 때 필요한 (바이트 단위) 메모리 용량
1068 .IP 16. 4
1069 필터 체인. 대부분 사용하는 옵션은 압축 해제시 필요한 옵션만을 \fB.xz\fP 헤더에 저장하기 때문에 압축 시간에 알 수 없습니다.
1070 .RE
1071 .PD
1072 .PP
1073 \fB요약\fP 행 컬럼:
1074 .PD 0
1075 .RS
1076 .IP 2. 4
1077 이 \fBxz\fP 버전에서 이 파일 압축을 해제할 때 필요한 (바이트 단위) 메모리 용량
1078 .IP 3. 4
1079 모든 블록 헤더에 압축 크기와 압축 전 원본 크기 정보가 들어갔는지 여부를 나타내는 \fByes\fP 또는 \fBno\fP 값
1080 .PP
1081 \fBxz\fP \fI5.1.2alpha\fP \fI부터:\fP
1082 .IP 4. 4
1083 파일 압축 해제시 필요한 최소 \fBxz\fP 버전
1084 .RE
1085 .PD
1086 .PP
1087 \fB총계\fP 행 컬럼:
1088 .PD 0
1089 .RS
1090 .IP 2. 4
1091 스트림 갯수
1092 .IP 3. 4
1093 블록 갯수
1094 .IP 4. 4
1095 압축 크기
1096 .IP 5. 4
1097 압축 해제 용량
1098 .IP 6. 4
1099 평균 압축율
1100 .IP 7. 4
1101 파일에 들어 있어 쉼표로 구분한 무결성 검사 이름 목록
1102 .IP 8. 4
1103 스트림 패딩 길이
1104 .IP 9. 4
1105 파일 갯수. \fB파일\fP 행의 컬럼 순서를 따라갑니다.
1106 .PD
1107 .RE
1108 .PP
1109 \fB\-\-verbose\fP 옵션을 두 번 지정하면, \fB총계\fP 행에 추가 컬럼이 들어갑니다:
1110 .PD 0
1111 .RS
1112 .IP 10. 4
1113 이 \fBxz\fP 버전에서 파일 압축을 해제할 떄 필요한 (바이트 단위) 최대 메모리 사용량
1114 .IP 11. 4
1115 모든 블록 헤더에 압축 크기와 압축 전 원본 크기 정보가 들어갔는지 여부를 나타내는 \fByes\fP 또는 \fBno\fP 값
1116 .PP
1117 \fBxz\fP \fI5.1.2alpha\fP \fI부터:\fP
1118 .IP 12. 4
1119 파일 압축 해제시 필요한 최소 \fBxz\fP 버전
1120 .RE
1121 .PD
1122 .PP
1123 차후 버전에서는 새 행 형식을 추가하고 기존 행 형식에 추가할 수 있는 새 컬럼을 넣기 까지는 알 수 있겠지만, 기존 컬럼은 바꾸지 않을
1124 예정입니다.
1125 .
1126 .SS "필터 도움말"
1127 \fBxz \-\-robot \-\-filters\-help\fP 는 다음 형식의 지원 필터 목록을 출력합니다:
1128 .PP
1129 \fI<필터>\fP\fB:\fP\fI<옵션>\fP\fB=<\fP\fI값\fP\fB>,\fP\fI<옵션>\fP\fB=<\fP\fI값\fP\fB>\fP...
1130 .TP
1131 \fI<필터>\fP
1132 필터 이름
1133 .TP
1134 \fI<옵션>\fP
1135 필터별 옵션 이름
1136 .TP
1137 \fI<값>\fP
1138 숫자 \fI값\fP 범위는 \fB<\fP\fI최소\fP\fB\-\fP\fI최대\fP\fB>\fP입니다. 문자열 \fI값\fP은 \fB< >\fP 범위
1139 내에서 선택하며 \fB|\fP 문자로 구분합니다.
1140 .PP
1141 각 필터는 한 줄에 하나씩 출력합니다.
1142 .
1143 .SS "메모리 제한 정보"
1144 \fBxz \-\-robot \-\-info\-memory\fP 명령은 탭으로 나뉜 여러 컬럼을 단일 행으로 나타냅니다:
1145 .IP 1. 4
1146 물리 메모리(RAM)의 바이트 단위 총량.
1147 .IP 2. 4
1148 압축 진행시 바이트 단위 메모리 사용 한계값 (\fB\-\-memlimit\-compress\fP). 특수 값 \fB0\fP은 단일\-스레드 모드에서
1149 제한을 두지 않는 기본 설정임을 나타냅니다.
1150 .IP 3. 4
1151 압축 해제시 바이트 단위 메모리 사용 한계값 (\fB\-\-memlimit\-decompress\fP). 특수 값 \fB0\fP은 단일\-스레드 모드에서
1152 제한을 두지 않는 기본 설정임을 나타냅니다.
1153 .IP 4. 4
1154 \fBxz\fP 5.3.4alpha 이후: 다중\-스레드 기반 압축 해제시 바이트 단위 메모리
1155 사용량(\fB\-\-memlimit\-mt\-decompress\fP). 분명하게 제한을 걸어두지 않았을 경우 5번째 컬럼에 나타난 시스템별
1156 기본값을 사용하기 때문에 0 값을 지정하면 안됩니다. 또한 \fB\-\-memlimit\-mt\-decompress\fP로 세번째 컬럼 값보다 더
1157 크게 지정을 한다 할지라도 이 값이 세번째 컬럼 값보다 크면 안됩니다.
1158 .IP 5. 4
1159 \fBxz\fP 5.3.4alpha 이후: A system\-specific default memory usage limit that is
1160 used to limit the number of threads when compressing with an automatic
1161 number of threads (\fB\-\-threads=0\fP) and no memory usage limit has been
1162 specified (\fB\-\-memlimit\-compress\fP). This is also used as the default value
1163 for \fB\-\-memlimit\-mt\-decompress\fP.
1164 .IP 6. 4
1165 \fBxz\fP 5.3.4alpha 이후: Number of available processor threads.
1166 .PP
1167 차후, \fBxz \-\-robot \-\-info\-memory\fP 출력에는 더 많은 내용이 들어가지만, 한 줄 이상은 넘어가지 않습니다.
1168 .
1169 .SS 버전
1170 \fBxz \-\-robot \-\-version\fP 은 \fBxz\fP 와 liblzma의 버전 번호를 다음 형식으로 나타냅니다:
1171 .PP
1172 \fBXZ_VERSION=\fP\fIXYYYZZZS\fP
1173 .br
1174 \fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP
1175 .TP
1176 \fIX\fP
1177 주 버전.
1178 .TP
1179 \fIYYY\fP
1180 부 버전. 짝수가 안정 버전입니다. 홀수는 알파 또는 베타 버전입니다.
1181 .TP
1182 \fIZZZ\fP
1183 안정 릴리스의 패치 수준 또는 개발 릴리스의 횟수입니다.
1184 .TP
1185 \fIS\fP
1186 안정도. 0은 알파 버전, 1은 베타 버전을 나타내며, 2는 안정 버전을 나타냅니다. \fIS\fP는 \fIYYY\fP 값이 짝수라 해도 항상
1187 2여야 합니다.
1188 .PP
1189 \fBxz\fP 명령과 liblzma이 동일한 XZ 유틸리티 릴리스에서 나왔다면 두 행의 \fIXYYYZZZS\fP 값은 같습니다.
1190 .PP
1191 예제: 4.999.9beta는 \fB49990091\fP이며, 5.0.0은 \fB50000002\fP입니다.
1192 .
1193 .SH "종료 상태"
1194 .TP
1195 \fB0\fP
1196 모든 상태 양호.
1197 .TP
1198 \fB1\fP
1199 오류 발생.
1200 .TP
1201 \fB2\fP
1202 눈여겨볼 경고가 나타났지만, 실제 오류는 일어나지 않음.
1203 .PP
1204 표준 오류에 출력하는 알림(경고 또는 오류 아님)는 종료 상태에 영향을 주지 않습니다.
1205 .
1206 .SH 환경
1207 \fBxz\fP는 빈칸으로 구분한 옵션 값 목록을 \fBXZ_DEFAULTS\fP, \fBXZ_OPT\fP 환경 변수에서 순서대로, 명령행에서 옵션을
1208 해석하기 전에 불러옵니다. 참고로 환경 변수에서 옵션만 해석하며, 옵션이 아닌 부분은 조용히 무시합니다. 해석은
1209 \fBgetopt_long\fP(3)으로 가능하며, 명령행 인자로 활용하기도 합니다.
1210 .TP
1211 \fBXZ_DEFAULTS\fP
1212 사용자별, 시스템 범위 기본 옵션입니다. 보통 \fBxz\fP의 메모리 사용량 제한을 기본으로 걸어둘 경우 셸 초기화 스크립트에
1213 설정합니다. 셸 초기화 스크립트와 별도의 유사한 경우를 제외하고라면, 스크립트에서는 \fBXZ_DEFAULTS\fP 환경 변수를 설정하지
1214 말거나 설정을 해제해야합니다.
1215 .TP
1216 \fBXZ_OPT\fP
1217 \fBxz\fP 명령행으로 옵션 설정 값을 직접 전달할 수 없을 경우 \fBxz\fP에 옵션을 전달하는 환경 변수입니다. 예를 들어, \fBxz\fP를
1218 스크립트 또는 도구에서 실행할 경우 GNU \fBtar\fP(1) 라면:
1219 .RS
1220 .RS
1221 .PP
1222 .nf
1223 \f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR
1224 .fi
1225 .RE
1226 .RE
1227 .IP ""
1228 예를 들면, 스크립트에서 \fBXZ_OPT\fP 를 활용하여, 스크립트별로 기본 압축 옵션을 지정할 수 있습니다. 적절한 이유가 있다면
1229 \fBXZ_OPT\fP 옵션 값을 사용자가 바꾸는걸 추천합니다. 예를 들면, \fBsh\fP(1) 스크립트에서 다음처럼 활용할 수도 있습니다:
1230 .RS
1231 .RS
1232 .PP
1233 .nf
1234 \f(CRXZ_OPT=${XZ_OPT\-"\-7e"}
1235 export XZ_OPT\fR
1236 .fi
1237 .RE
1238 .RE
1239 .
1240 .SH "LZMA 유틸리티 호환성"
1241 \fBxz\fP의 명령행 문법은 실제로 LZMA 유틸리티 4.32.x에서 찾을 수 있는 \fBlzma\fP, \fBunlzma\fP \fBlzcat\fP의
1242 상위 집합입니다. 대부분의 경우 LZMA 유틸리티를 XZ 유틸리티로 기존에 작성한 스크립트를 깨지 않고도 바꿀 수 있습니다. 몇가지
1243 비호환성 문제 때문에 문제가 일어날 수는 있습니다.
1244 .
1245 .SS "압축 사전 설정 단계"
1246 압축 수준 사전 설정의 번호 부여 방식은 \fBxz\fP와 LZMA 유틸리티가 동일하지 않습니다. 가장 중요한 차이는 다른 사전 설정에 대해
1247 딕셔너리 크기를 어떻게 대응했느냐 여부입니다. 딕셔너리 크기는 압축 해제시 메모리 사용량과 거의 비슷합니다.
1248 .RS
1249 .PP
1250 .TS
1251 tab(;);
1252 c c c
1253 c n n.
1254 단계;xz;LZMA 유틸리티
1255 \-0;256 KiB;없음
1256 \-1;1 MiB;64 KiB
1257 \-2;2 MiB;1 MiB
1258 \-3;4 MiB;512 KiB
1259 \-4;4 MiB;1 MiB
1260 \-5;8 MiB;2 MiB
1261 \-6;8 MiB;4 MiB
1262 \-7;16 MiB;8 MiB
1263 \-8;32 MiB;16 MiB
1264 \-9;64 MiB;32 MiB
1265 .TE
1266 .RE
1267 .PP
1268 딕셔너리 크기 차이는 압축 프로그램 메모리 사용에 영향을 주지만, LZMA 유틸리티와 XZ 유틸리티에서 사용량이 늘어나는 다른 차이점이
1269 있습니다:
1270 .RS
1271 .PP
1272 .TS
1273 tab(;);
1274 c c c
1275 c n n.
1276 단계;xz;LZMA 유틸리티 4.32.x
1277 \-0;3 MiB;없음
1278 \-1;9 MiB;2 MiB
1279 \-2;17 MiB;12 MiB
1280 \-3;32 MiB;12 MiB
1281 \-4;48 MiB;16 MiB
1282 \-5;94 MiB;26 MiB
1283 \-6;94 MiB;45 MiB
1284 \-7;186 MiB;83 MiB
1285 \-8;370 MiB;159 MiB
1286 \-9;674 MiB;311 MiB
1287 .TE
1288 .RE
1289 .PP
1290 XZ 유틸리티의 기본 사전 설정 수준값은 \fB\-6\fP이지만 LZMA 유틸리티의 기본 사전 설정 수준값은 \fB\-7\fP입니다. 두 프로그램의
1291 딕셔너리 메모리 기본 사용량은 8MiB입니다.
1292 .
1293 .SS "스트림 vs 비스트림 .lzma 파일"
1294 파일을 압축하지 않은 크기는 \fB.lzma\fP 헤더에 저장합니다. LZMA 유틸리티는 일반 파일을 압축할 때 압축하지 않은 파일의 크기를
1295 저장합니다. 이 대신 압축하지 않은 크기를 '알 수 없음' 으로 저장하고 압축 해제 프로그램이 멈춰야 할 지점에
1296 end\-of\-payload 마커를 사용하는 방법도 있습니다. LZMA 유틸리티는 파이프로 들어온 입력과 같이 압축하지 않은 파일의
1297 크기를 알 수 없을 때 이런 방식을 활용합니다.
1298 .PP
1299 \fBxz\fP는 \fB.lzma\fP 파일을 end\-of\-payload 마커의 유무와 관계없이 압축 해제 방식을 모두 지원하지만, \fBxz\fP로
1300 만든 모든 \fB.lzma\fP 파일은 end\-of\-payload 마커를 사용하며, \fB.lzma\fP 헤더에 압축하지 않은 파일 크기를 '알 수
1301 없음'으로 표기합니다. 이 방식은 드문 상황에서 문제를 야기할 수 있습니다. 예를 들면, 임베디드 장치의 \fB.lzma\fP 압축 해제
1302 프로그램은 압축을 해제했을 때 크기를 알아야 동작합니다. 이 문제를 만나면, LZMA 유틸리티 또는 LZMA SDK를 활용하여
1303 \&\fB.lzma\fP 파일에 압축 전 파일 크기 정보를 저장해야합니다.
1304 .
1305 .SS "지원하지 않는 .lzma 파일"
1306 \&\fB.lzma\fP 형식은 \fIlc\fP 값을 8까지 받아들이며, \fIlp\fP 값은 4까지 받아들입니다. LZMA 유틸리티는 어떤 \fIlc\fP 값과
1307 \fIlp\fP 값을 받아들이고도 압축을 해제할 수 있지만, 파일을 만들 때는 늘 \fBlc=3\fP 값과 \fBlp=0\fP 값을 활용합니다. 다른
1308 \fIlc\fP 값과 \fIlp\fP 값으로의 파일 압축은 \fBxz\fP와 LZMA SDK에서만 가능합니다.
1309 .PP
1310 liblzma의 LZMA1 필터 구현체에서는 \fIlc\fP 값과 \fIlp\fP 값의 합이 4를 넘어가면 안됩니다. 그래서 \fB.lzma\fP
1311 파일의 경우 이 제한을 넘어가면 \fBxz\fP로 압축을 해제할 수 없습니다.
1312 .PP
1313 LZMA 유틸리티는 2^\fIn\fP (2의 승수)크기를 지닌 딕셔너리를 가진 \fB.lzma\fP 파일만 만들지만 받아들이는 파일의 딕셔너리
1314 크기는 어떤 크기든 상관 없습니다. liblzma에서는 2^\fIn\fP, 2^\fIn\fP + 2^(\fIn\fP\-1) 딕셔너리 크기를 가진
1315 \&\fB.lzma\fP 파일 만 받아들입니다. 이로 인해 \fB.lzma\fP 파일을 확인할 때 거짓 양성율이 늘어납니다.
1316 .PP
1317 모든 \fB.lzma\fP 파일을 liblzma 에서 받아들일 수 있도록 압축하기 때문에 이 제한이 실제로는 문제가 되지 않습니다.
1318 .
1319 .SS "뒤따라오는 쓰레기 값"
1320 압축 해제할 때, LZMA 유틸리티는 \fB.lzma\fP 스트림 처음 부분 다음 나머지를 다 조용히 무시합니다. 대부분의 경우,
1321 버그입니다. LZMA 유틸리티에서 \fB.lzma\fP 결합 파일 압축 해제를 지원하지 않음을 의미하기도 합니다.
1322 .PP
1323 \&\fB.lzma\fP 스트림 처음부분 바로 다음에 데이터가 남아있을 경우, \fBxz\fP 에서는 \fB\-\-single\-stream\fP 옵션을 사용하지
1324 않으면 깨진 파일로 간주합니다. 이 동작으로 하여금 뒤따라오는 쓰레기 값을 무시하도록 간주하는 애매한 스크립트 동작을 깰 수가
1325 있습니다.
1326 .
1327 .SH 참고
1328 .
1329 .SS "출력 결과물이 달라짐"
1330 압축하지 않은 입력 파일로부터 얻어낸 정확한 압축 출력 결과물은 압축 옵션이 완전히 동일하더라도 XZ 유틸리티의 버전에 따라 달라질 수
1331 있습니다. 파일 형식에 영향을 주지 않고 인코더 그 자체를 개선(더 빠르게 하거나 더 나은 압축율로)하기 때문입니다. XZ 유틸리티
1332 버전이 동일하더라도 빌드 옵션을 달리하여 빌드 상태가 제각각인 경우 출력 결과물이 달라질 수 있습니다.
1333 .PP
1334 \fB\-\-rsyncable\fP 기능을 넣었을 경우 동일한 xz 버전에서 이전 파일과 새 파일로 별도로 압축하지 않는 한 결과 파일을 (두
1335 파일이 서로 다른 파일이 아니므로) rsync 처리할 필요가 없습니다. 이 문제는 인코더 구현체 기능 개발이 끝나서 xz 버전이
1336 다르더라도 안정적인 rsync 가능한 출력 결과물을 유지할 수 있을 때여야 해결할 수 있습니다.
1337 .
1338 .SS "내장 .xz 압축 해제 프로그램"
1339 XZ 임베디드와 같은 내장 \fB.xz\fP 압축 해제 구현체는 지원 파일의 무결성 \fI검사\fP 형식을 \fInone\fP과 \fIcrc32\fP 이외의
1340 설정으로 만들 필요가 없습니다. 기본값이 \fB\-\-check=crc64\fP일 경우에만, 임베디드 시스템에서 파일을 만들 때
1341 \fB\-\-check=none\fP 또는 \fB\-\-check=crc32\fP 옵션을 사용해야합니다.
1342 .PP
1343 임베디드 시스템이 아니라면, 모든 \fB.xz\fP 형식 압축 해제 프로그램에서는 모든 \fI검사\fP 형식을 지원하거나, 일부 \fI검사\fP 방식을
1344 지원하지 않는다면, 최소한, 무결성 검사로 검증하지 않고 압축을 해제할 수 있습니다.
1345 .PP
1346 XZ 임베디드는 BCJ 필터를 지원하지만, 기본 시작 오프셋만 지정할 수 있습니다.
1347 .
1348 .SH 예제
1349 .
1350 .SS 기본
1351 \fIfoo\fP 파일을 기본 압축 수준 (\fB\-6\fP) 으로 \fIfoo.xz\fP 파일에 압축해 넣고, 압축 과정이 무사히 끝나면 \fIfoo\fP를
1352 삭제합니다:
1353 .RS
1354 .PP
1355 .nf
1356 \f(CRxz foo\fR
1357 .fi
1358 .RE
1359 .PP
1360 \fIbar.xz\fP를 \fIbar\fP 에 압축을 해제한 후 압축 해제가 무사히 끝나도 \fIbar.xz\fP를 삭제하지 않습니다:
1361 .RS
1362 .PP
1363 .nf
1364 \f(CRxz \-dk bar.xz\fR
1365 .fi
1366 .RE
1367 .PP
1368 기본 사전 설정 \fB\-6\fP 보다는 느리지만, 압축 및 압축 해제시 메모리를 적게 차지(각각 48\ Mib, 5\MiB)는 \fB\-4e\fP
1369 사전 설정(\fB\-4 \-\-extreme\fP)을 활용하여 \fIbaz.tar.xz\fP 파일을 만듭니다:
1370 .RS
1371 .PP
1372 .nf
1373 \f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR
1374 .fi
1375 .RE
1376 .PP
1377 압축 및 비압축 파일을 단일 명령으로 표준 출력에 압축해제할 수 있습니다:
1378 .RS
1379 .PP
1380 .nf
1381 \f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR
1382 .fi
1383 .RE
1384 .
1385 .SS "다중 파일 병렬 압축"
1386 GNU와 *BSD에서는 \fBfind\fP(1) 명령과 \fBxargs\fP(1) 명령으로 여러 파일의 압축을 병렬 처리할 수 있습니다:
1387 .RS
1388 .PP
1389 .nf
1390 \f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e
1391 | xargs \-0r \-P4 \-n16 xz \-T1\fR
1392 .fi
1393 .RE
1394 .PP
1395 \fBxargs\fP(1) 의 \fB\-P\fP 옵션으로 \fBxz\fP 프로세스의 병렬 처리 갯수를 지정합니다. \fB\-n\fP 옵션의 최적 값은 압축할
1396 파일 수에 달려있습니다. 압축할 파일이 몇개밖에 없다면 1이어야합니다. 파일이 수천 수만개 정도 된다면 \fBxargs\fP(1) 이
1397 어쨌든지간에 만들어낼 \fBxz\fP 프로세스의 겟수를 100으로 하거나 아니면 적당한 값을 지정하여 줄이는게 좋습니다.
1398 .PP
1399 \fBxz\fP에 \fB\-T1\fP옵션을 지정하면 단일\-스레드 모드로 강제합니다. \fBxargs\fP(1) 에서 병렬 처리 갯수를 제어할 수 있기
1400 때문입니다.
1401 .
1402 .SS "로봇 모드"
1403 여러 파일을 압축한 후 저장할 바이트 용량을 계산합니다:
1404 .RS
1405 .PP
1406 .nf
1407 \f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR
1408 .fi
1409 .RE
1410 .PP
1411 이 스크립트에서는 충분히 최신의 \fBxz\fP 명령을 사용하는지 알아보려 합니다. 다음 \fBsh\fP(1) 스크립트에서는 \fBxz\fP 도구의
1412 버전 번호가 최소한 5.0.0인지 여부를 검사합니다. 이 방식은 \fB\-\-robot\fP 옵션을 지원하지 않는 오래된 베타 버전과도 호환성이
1413 있습니다:
1414 .RS
1415 .PP
1416 .nf
1417 \f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" ||
1418 [ "$XZ_VERSION" \-lt 50000002 ]; then
1419 echo "Your xz is too old."
1420 fi
1421 unset XZ_VERSION LIBLZMA_VERSION\fR
1422 .fi
1423 .RE
1424 .PP
1425 \fBXZ_OPT\fP 환경 변수로 압축 해제시 메뢰 사용량 한계를 설정하지만, 한계 값을 이미 설정했다면, 값을 늘리지 않습니다:
1426 .RS
1427 .PP
1428 .nf
1429 \f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB
1430 OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3)
1431 if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then
1432 XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM"
1433 export XZ_OPT
1434 fi\fR
1435 .fi
1436 .RE
1437 .
1438 .SS "개별 압축 필터 체인 설정"
1439 개별 설정 필터 체인의 초단순 사용방식은 LZMA2 사전 설정 값을 별도로 설정하는 방식입니다. 사전 설정은 잠재적으로 쓸만한 압축
1440 설정 조합만 다루기 때문에 꽤 쓸모가 있을 수도 있습니다.
1441 .PP
1442 \fB\-0\fP ... \fB\-9\fP 옵션의 설명에서 테이블의 CompCPU 컬럼과 \fB\-\-extreme\fP 옵션은 LZMA2 사전 설정을
1443 개별적으로 맞췄을 때 쓸만할 수도 있습니다. 여기 관련내용을 테이블 둘로 정리해서 모아보았습니다:
1444 .RS
1445 .PP
1446 .TS
1447 tab(;);
1448 c c
1449 n n.
1450 Preset;CompCPU
1451 \-0;0
1452 \-1;1
1453 \-2;2
1454 \-3;3
1455 \-4;4
1456 \-5;5
1457 \-6;6
1458 \-5e;7
1459 \-6e;8
1460 .TE
1461 .RE
1462 .PP
1463 어떤 파일을 압축할 때 상당히 큰 딕셔너리(예: 32MiB)가 필요 하다는걸 알아채셨지만, \fBxz \-8\fP 명령이 압축할 때보다 더 빠른
1464 속도로 압축하려 한다면, 더 큰 딕셔너리 사용을 위해 더 낮은 CompCPU 사전 설정 값(예: 1)으로 수정할 수 있습니다:
1465 .RS
1466 .PP
1467 .nf
1468 \f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR
1469 .fi
1470 .RE
1471 .PP
1472 각 파일에 대해, 위 명령은 압축율이 더 좋아지면서도 \fBxz \-6\fP보다 더 빨라집니다. 그러나, CompCPU 값을 낮게 유지하는
1473 대신 큰 딕셔너리에서 일부 파일을 강조해야 합니다. 큰 딕셔너리가 대부분의 도움을 주는 매우 명백한 상황에서는 최소한 몇 메가바이트의
1474 매우 유사한 각 파일이 아카이브에 들어갑니다. 딕셔너리 크기는 LZMA2가 연속으로 존재하는 각 파일의 유사성으로부터 얻는 장점을 취할
1475 수 있을 때 일부 개별 파일보다 훨씬 더 커집니다.
1476 .PP
1477 압축 프로그램과 압축 해제 프로그램에서 메모리를 엄청 많이 사용해도 상관 없고, 파일을 수백 메가 바이트 메모리 용량을 활용하여
1478 압축한다면, \fBxz \-9\fP 명령에 64MiB 용량을 초과하는 딕셔너리를 사용할 수 있게 하는 방법도 쓸만할 지도 모릅니다:
1479 .RS
1480 .PP
1481 .nf
1482 \f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR
1483 .fi
1484 .RE
1485 .PP
1486 위 예제에서와 같이 \fB\-vv\fP (\fB\-\-verbose \-\-verbose\fP) 옵션을 사용하면 압축 및 압축 해제 과정에서 필요한 메모리
1487 용량을 살펴보는데 요긴할 수 있습니다. 압축 해제한 파일 크기보다 더 큰 딕셔너리를 사용하면 불필요한 메모리 소모량이 발생하여 위
1488 명령이 작은 파일에는 쓸모 없음을 기억하십시오.
1489 .PP
1490 때로는 압축 시간이 딱히 상관이 없을 수도 있습니다만, 압축 해제시 메모리 사용량을 적게 유지해야 할 수도 있습니다. 예를 들면,
1491 임베디드 시스템에서 파일 압축을 해제할 수도 있습니다. 다음 명령의 경우 \fB\-6e\fP (\fB\-6 \-\-extreme\fP) 옵션을 기반
1492 옵션을 사용하며 딕셔너리 크기를 64KiB만 사용하도록 제한합니다. 결과 파일은 XZ 임베디드(이게 \fB\-\-check=crc32\fP
1493 옵션이 있는 이유)로 100KiB 메모리 용량을 활용하여 풀어낼 수 있습니다.
1494 .RS
1495 .PP
1496 .nf
1497 \f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR
1498 .fi
1499 .RE
1500 .PP
1501 가능한 한 수 바이트를 더 쥐어 짜내고 싶을 때, 리터럴 문맥 비트 수(\fIlc\fP)와 위치 비트 수(\fIpb\fP)를 조정하면 도움이 될
1502 수도 있습니다. 리터럴 위치 비트 수(\fIlp\fP)를 조금 건드리는 것 또한 도움이 될 지도 모르겠지만 보통 \fIlc\fP 값과 \fIpb\fP
1503 값이 더 중요합니다. 예를 들면, 소스 코드 저장 파일에는 US\-ASCII 텍스트가 대부분이기에, 다음과 같은 경우는 \fBxz \-6e\fP
1504 명령을 실행했을 때부다는 아주 약간(거의 0.1% 수준) 작은 파일을 얻어낼 수도 있습니다(\fBlc=4\fP를 빼고도 시도해보십시오):
1505 .RS
1506 .PP
1507 .nf
1508 \f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR
1509 .fi
1510 .RE
1511 .PP
1512 LZMA2와 다른 필터를 함께 사용하면 일부 파일 형식에 대해 압축율을 개선할 수 있습니다. 예를 들면 x86\-32 또는 x86\-64
1513 공유 라이브러리를 x86 BCJ 필터를 활용하여 압축할 경우:
1514 .RS
1515 .PP
1516 .nf
1517 \f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR
1518 .fi
1519 .RE
1520 .PP
1521 참고로 필터 옵션의 순서는 상당히 중요합니다. \fB\-\-x86\fP을 \fB\-\-lzma\fP 이전에 지정하면 \fBxz\fP에서 오류가 나는데,
1522 LZMA2 다음에는 어떤 필터든 설정할 수 없고, 옵션 체인상 마지막 필터로 x86 BCJ 필터를 사용할 수 없기 때문입니다.
1523 .PP
1524 LZMA2와 델타 필터는 비트맵 그림에 최적의 결과를 가져다줄 수 있습니다. PNG에 보통 안성맞춥인데, PNG에는 단순 델타 필터보단
1525 약간 더 고급진 필터를 사용하지만, 실제 압축을 진행할 때는 Deflate를 사용하기 때문입니다.
1526 .PP
1527 예를 들어 이미지를 압축하지 않은 비압축 TIFF로 저장해야 하는 경우가 있습니다. 델타 필터의 거리 매개변수는 그림에서 픽셀당 바이트
1528 수에 일치하도록 설정합니다. 예를 들면, 24비트 RGB 비트맵의 경우 \fBdist=3\fP 거리 매개변수 값을 설정해야 하며, LZMA2
1529 압축시 3바이트 정렬을 따르도록 \fBpb=0\fP 값을 전달하는 방법도 바람직합니다:
1530 .RS
1531 .PP
1532 .nf
1533 \f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR
1534 .fi
1535 .RE
1536 .PP
1537 여러 이미지를 단일 아카이브로 넣고 싶다면(예: \fB.tar\fP), 모든 이미지에 대해 동일한 픽셀당 바이트 수가 들어가는 경우에도 델타
1538 필터가 동작합니다.
1539 .
1540 .SH "추가 참조"
1541 \fBxzdec\fP(1), \fBxzdiff\fP(1), \fBxzgrep\fP(1), \fBxzless\fP(1), \fBxzmore\fP(1),
1542 \fBgzip\fP(1), \fBbzip2\fP(1), \fB7z\fP(1)
1543 .PP
1544 XZ 유틸리티: <https://tukaani.org/xz\-utils/>
1545 .br
1546 XZ 임베디드: <https://tukaani.org/xz/embedded/>
1547 .br
1548 LZMA SDK: <https://7\-zip.org/sdk.html>