임시 폴더로 추출하지 않고 rar 또는 tgz에서 squashfs로 변환하는 방법은 무엇입니까?

임시 폴더로 추출하지 않고 rar 또는 tgz에서 squashfs로 변환하는 방법은 무엇입니까?

저는 압축을 위해 squashfs를 사용하는 것을 좋아합니다. 내부 파일에 액세스하기 위해 루프 장치로 마운트하기가 쉽기 때문입니다.

나는 많은 rar, tgz 및 zip 파일을 가지고 있는데 그것들을 squashfs로 변환하고 싶습니다.

존재하다이 답변, 임시 파일의 전체 디스크 크기를 사용하지 않도록 디스크 이미지를 squashfs로 압축할 때 더미 파일을 사용할 수 있다는 것을 발견했습니다.

mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'

더미 파일을 사용하여 rar, tgz 또는 zip을 같은 방식으로 (즉석에서) squashfs로 변환하고 싶기 때문에 먼저 전체 아카이브를 디스크에 추출한 다음 별도의 작업으로 squashfs로 압축할 필요가 없습니다.

이러한 아카이브 중 일부에는 수천 개의 개별 파일이 포함되어 있으며, 그 중 일부에는 파일 이름에 공백이나 기타 특수 문자가 포함되어 있습니다.

내가 찾고 있어요읽어보기 파일, 해당 옵션을 사용해야 한다고 생각 -pf <pseudo-file>하지만 더미 파일을 동적으로 생성하는 방법을 잘 모르겠습니다(그리고 공백이 있는 파일 이름에도 문제가 없습니다). 소스 아카이브에서 파일 목록을 생성하려면 프로세스 대체를 사용해야 할 것 같습니다.

이상적으로는 각 아카이브에 대해 별도의 더미 파일을 만들지 않고도 rar, tgz 또는 zip을 변환하는 명령을 갖고 싶습니다. 그러나 누군가가 아카이브 형식 중 하나를 사용하여 이 작업을 수행하는 방법을 알려줄 수 있다면 관심이 있을 것입니다. 다른 사람들을 위해 이 문제를 해결해 보세요.

모두 감사합니다.

답변1

또는 를 사용하여 설치한 다음 마운트 지점에서 squashfs 파일을 생성할 수 fuse-zip있습니다 archivemount.

예를 들어, 이는 zip 파일에 대해 작동합니다.

$ mkdir /tmp/zmnt
$ fuse-zip -r /path/to/file1.zip /tmp/zmnt
$ mksquashfs /tmp/zmnt /path/to/file1.squashfs
$ fusermount -u /tmp/zmnt

답변2

tar2sqfs에서 있습니다https://github.com/AgentD/squashfs-tools-ng/

적어도 살펴볼 가치가 있는 대안이 될 수 있습니다.

관련 정보