저는 압축을 위해 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/
적어도 살펴볼 가치가 있는 대안이 될 수 있습니다.