나는 수 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