매뉴얼 페이지에는 7z 도구 지원이 나와 있습니다.7z, LZMA2, XZ, ZIP, Zip64, CAB, RAR, ARJ, GZIP, BZIP2, TAR, CPIO, RPM, ISO,대부분의 파일 시스템 이미지와DEB체재.
-t{Type}
다음 명령이 성공 하면 유형을 전달할 수 있다고 나와 있습니다 .
7z a -tzip archive.zip dir1 dir2 file1 file2
.xz
하지만 다음 명령을 사용하여 파일을 보관할 수 없습니다 .
7z a -txz archive.zip dir1 dir2 file1 file2
$ 7z a -txz archive.xz dir1 dir2 file1 file2
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (806E9),ASM,AES-NI)
Scanning the drive:
2 folders, 7 files, 196192711 bytes (188 MiB)
Creating archive: archive.xz
Items to compress: 9
System ERROR:
E_INVALIDARG
내가 여기서 뭔가 잘못하고 있는 걸까요? .xz
명령을 사용하여 파일을 만드는 방법은 무엇입니까 7z
?
편집하다: 다음 명령이 성공합니다.
7z a -txz archive archive.tar
파일을 먼저 보관하지 않으면 파일에 직접 압축을 사용할 수 없기 때문에 보관된 파일 에만 -txz
or 를 사용할 수 있다는 의미입니까?-tbzip2
답변1
gzip( .gz
) 및 bzip2( .bz2
)와 비슷하지만 zip 및 rar과 달리 xz는 아카이브 형식이 아닌 압축 형식입니다. 파일을 압축할 수 있습니다.
7z a -txz foo.xz foo
이는 와 동일합니다 xz foo
.
일반적으로 압축된 아카이브를 만들려면 tar 아카이브를 만들고 압축합니다. 7z를 사용하여 압축된 아카이브를 만들 수 있지만 내가 아는 한 한 단계로 할 수는 없습니다. 먼저 tar를 만든 다음 압축해야 합니다. (7z는 압축된 아카이브에서 직접 읽는 방법을 알고 있습니다.) 파이프라인에서 이 작업을 수행할 수 있습니다.
set -o pipefail
7z a -ttar -so archive.tar.xz dir1 dir2 file1 file2 | 7z a -txz -si archive.tar.xz
내가 아는 한, archive.tar.xz
왼쪽 명령은 무시되지만( -so
7z에게 stdout에 쓰라고 지시함) 여전히 필요합니다.
파이프를 사용할 때 sh에서 파일을 읽을 수 없기 때문에 tar 생성이 실패하더라도 파이프 명령은 실패하지 않습니다. Ksh, bash 및 zsh에는 pipefail
전체 명령이 실패하도록 하는 옵션이 있습니다 .
직접 전화하는 것이 훨씬 간단합니다 tar
. 대부분의 최신 tar 구현에서는 gz, bz2 및 xz 압축 아카이브를 만들 수 있습니다.
tar -cJf archive.tar.xz dir1 dir2 file1 file2