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


14

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

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

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

답변:


20

이 명령 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

참고 문헌


8

당신이 중 하나에 대해 얘기하고 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 에 커널.


mikeserv에게 감사합니다. 이것은 좋은 답변이며 많은 것을 배웠지 만 그 중 하나가 더 중요하기 때문에 다른 답변을 수락했습니다.
Helium

2
@Mohsen-나는 완전히 이해하고 아마 똑같이했을 것입니다. 때때로 우리가 요구하는 답변은 우리가 얻는 답변이 아니며, 아마도 우리가 처음에 물어볼 필요가 있기 때문에 아마 좋은 것입니다. 어쨌든, 나는 의견을 대단히 감사합니다.
mikeserv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.