[unix] zip 및 tar.gz 파일을 디렉토리로 파일 시스템에 통합 할 수 있습니까?

압축 된 파일을 디렉토리로 파일 시스템에 통합하는 방법이 있는지 궁금합니다 (마운트와 약간 다릅니다).

예를 들어, compressed-file.tar.gz로컬 하드 드라이브에 a 를 다운로드 한 다음 cd compressed-file.tar.gz압축 폴더 내에서 스크립트를 실행 cp some-file ..하고 파일 중 하나를 추출 할 수 있습니다.

Btrfs 가 압축을 지원 한다는 것을 알고 있지만이 기능을 지원하기 위해 가지고있는 파일 시스템 (ext3)을 변경하고 싶지 않습니다.



답변

이 명령 archivemount을 사용하여 와 같은 아카이브를 마운트 할 수 있습니다 .tar.gz.

$ ls
files.tgz    mnt/

$ archivemount files.tgz mnt

$ ls mnt
file1    file2

[... Perform desired read/write operations on the archive via mnt/ ...]

$ umount mnt

[... Any changes are saved to the archive ...]

자세한 내용은 매뉴얼 페이지를 참조하십시오 archivemount. 종종 설치되지 않기 때문에 패키지를 설치해야 할 것입니다. 라고도 archivemount합니다. Fedora 19에서 예를 들면 다음과 같습니다.

$ sudo yum install archivemount

참고 문헌


답변

당신이 중 하나에 대해 얘기하고 FUSE파일 시스템 – (리누스는 사용자 공간에서 파일 시스템 그들을 장난감 호출 ) 또는 사용자 정의 컴파일 된 커널을 또는 squashfs. Squash당신은 단순히 예를 들면 타르를 탑재 할 수 없습니다 – -가 아니라 커널 어쨌든, VFS 지원 – 당신이 설명하는대로 정확하게는 아니지만 mksquash원하는 수의 파일 또는 디렉토리를 확보하고 결과 아카이브를 읽기 전용으로 마운트 할 수 있습니다 . xz, lzma, or gz압축을 선택할 수 있습니다 . Squash라이브 리눅스 이미지를 사용한 적이 있다면 아주 좋았습니다.squashed.

이미지 파일 을 만들고 볼륨 을 만드는 데 사용 squashfs.하는 트릭을 알려 드리겠습니다 . 그런 다음 해당 이미지를 아카이브 에 넣습니다 . 거기에 내가 할 수에서 그 내에서 이미지. btrfsbtrfstune -S 1seedsquashfsmount -o loopimage.sfsmount -o loopbtrfs

btrfs seed볼륨이 처음으로 마운트합니다 read-only그것이 포함 있다고 생각 예상 할 수있는 – squashed루프 마운트를. 그러나 내가하면 :

GB_tmp_loop=$(
    fallocate -l $((1024*1024*1024)) /tmp/1GB_tmp.img &&
    losetup -f --show $_
)
btrfs device add "$GB_tmp_loop" "${btrfs_seed=/path/to/btrfs_image_mount}"
umount "$btrfs_seed"
mount -o compress-force=lzo,autodefrag,rw "$GB_tmp_loop" "$btrfs_seed"

갑자기 나는 이용 취하고 btrfsS의 copy-on-write기능과 자동 쓰기 압축 squashfs 모든 RAM 우수한 압축이야 AND 에 커널.


답변