tar를 7z로 직접 변환하시겠습니까?

tar를 7z로 직접 변환하시겠습니까?

나는 수 GB 크기이고 수천 개의 파일을 포함하는 여러 개의 타르볼을 가지고 있으며, 현재 타르볼은 개별 파일을 추출하는 것을 매우 지루하게 만들기 때문에 이를 보다 일반적인 7z 아카이브로 변환할 수 있는지 궁금합니다. 가능하다면 이 작업을 내부에서 수행하고 싶습니다. 즉, 타르볼을 완전히 추출하지 않은 상태에서 수행하고 싶습니다.

이 작업을 수행하기 위해 다음 명령을 사용할 수 있다고 생각했지만 결과 아카이브에는 모든 데이터가 포함된 파일이 하나만 포함되어 있습니다.

tar -xf 100GB.tar -O | 7za a -si -ms=16f32m 100GB.7z

이것이 가능한가?

답변1

archivemount압축을 풀지 않고 tar 아카이브를 마운트할 수 있습니다. 그런 다음 포함된 파일을 다른 곳에 있는 것처럼 압축할 수 있습니다. 나는 그것을 여러 번 사용하지 않았습니다. 내 생각엔 그 웹사이트가 오래 전에 다운된 것 같은데, 어쩌면 가장 좋은 징후는 아닐 수도 있습니다.

당신이 아니라면놓다7z에서는 유사한 압축 도구를 사용할 수 있으며, 가장 중요한 것은 모든 권한을 유지하고 모든 최신 Linux에서 즉시 마운트할 수 있는 아카이브를 생성할 수 있다는 것입니다(즉, 타사 사용자 공간 파일 시스템을 설치할 필요가 없습니다. 예를 들어 archivemount) :

mksquashfs my_new_compressed_archive.squash  -comp zstd  -tar        < 100GB.tar
#          | target archive name          | |compressor| |read tar|  |read from this file|
#                                           |          \______
#                                           |use -comp lzma   |
#                                           |to use the same  |
#                                           |compressor as 7z.|
#                                           |Usually, zstd is |
#                                           |a good choice, as|
#                                           |it's not as slow |
#                                           |as LZMA/7z at    |
#                                           |reasonable com-  |
#                                           |pression ratios. |
#                                           |Also, unlike LZMA|
#                                           |zstd-compressed  |
#                                           |squashfs can be  |
#                                           |mounted by the   |
#                                           |Linux kernel.    |
#                                           \~~~~~~~~~~~~~~~~~/

그런 다음 일반 사용자라도 새로 생성된 아카이브를 마운트할 수 있습니다.

udiskctl loop-setup -f my_new_compressed_archive.squash

관련 정보