압축된 파일을 파일 시스템에 디렉터리로 통합할 수 있는 방법이 있는지 궁금합니다(마운팅과 약간 다르다고 가정합니다).
예를 들어 파일을 compressed-file.tar.gz
로컬 하드 드라이브에 다운로드한 다음 cd compressed-file.tar.gz
압축 폴더 내에서 스크립트를 실행 및 실행하거나 cp some-file ..
파일 중 하나를 추출할 수 있습니다.
알아요BTRFS압축이 지원되지만 이 기능을 지원하기 위해 가지고 있는 파일 시스템(ext3)을 변경하고 싶지 않습니다.
답변1
이 명령을 사용하여 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
자세한 내용은 매뉴얼 페이지를 참조하십시오. 일반적으로 설치되지 않으므로 패키지를 설치해야 할 수도 있습니다. Fedora 19를 예로 들어 보겠습니다 archivemount
.
$ sudo yum install archivemount
인용하다
답변2
당신은 FUSE
파일 시스템 에 대해 이야기하고 있습니다(사용자 공간의 파일 시스템 - Linus장난감이라고 불러)또는 사용자 정의 컴파일된 커널이거나 squashfs. Squash
설명과 정확히 일치하지 않습니다. 예를 들어 커널 지원 VFS를 사용하지 않고 단순히 타르볼을 마운트할 수는 없지만 물론 mksquash
원하는 수의 파일이나 디렉터리를 가져와서 넣을 수 있습니다. 결과 아카이브는 다음과 같습니다. 읽기 전용으로 설치되었습니다. xz, lzma, or gz
압축 방식을 선택할 수 있습니다 . Squash
항상 사용됨 - 라이브 Linux 이미지를 사용해 본 적이 있다면 아마도 그럴 가능성이 높습니다.squashed.
제가 사용하는 비법을 알려드리겠습니다. 저는 이미지 파일을 squashfs.
만들어서 이를 사용하여btrfs
btrfstune -S 1
seed
용량. 그런 다음 해당 이미지를 squashfs
아카이브에 넣었습니다 . 거기에서 mount -o loop
이미지를 볼 수 있습니다. image.sfs
mount -o loop
btrfs
볼륨은 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"
btrfs
갑자기 나는 s를 이용했다 .copy-on-write
기능 및 자동 쓰기 압축그리고 squashfs
RAM에 모두 저장되는 뛰어난 압축그리고커널에서.