zipおよびtar.gzファイルをディレクトリとしてファイルシステムに統合することは可能ですか


14

圧縮ファイルをディレクトリとしてファイルシステムに統合する方法があるのではないかと思います(マウントとは少し異なります)?

たとえば、compressed-file.tar.gzローカルハードドライブにをダウンロードcd compressed-file.tar.gzし、圧縮フォルダー内からスクリプトを実行して実行したりcp some-file ..、ファイルの1つを抽出したりできます。

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 ...]

詳細については、manページを参照してarchivemountください。多くの場合、インストールされていないため、パッケージをインストールする必要があります。とも呼ばれarchivemountます。Fedora 19では、例えば:

$ sudo yum install archivemount

参照資料


8

あなたはFUSEファイルシステム(ユーザースペースのファイルシステム-Linus はそれらをおもちゃと呼んでいますまたはカスタムコンパイルされたカーネルについて話しているか、squashfs. Squash説明したとおりではありません-単にtarballをマウントすることはできませんもちろんmksquash、任意の数のファイルまたはディレクトリを作成し、結果のアーカイブを読み取り専用でマウントできます。xz, lzma, or gz圧縮を選択できます。Squash常に使用されます-あなたがライブLinuxイメージを使用したことがあるなら、チャンスは非常に良いですsquashed.

私はあなたに1つのトリックIの使用を教えてあげるsquashfs.私が作成したいbtrfs画像ファイルと使用をbtrfstune -S 1それにするseedボリューム。次に、そのイメージをsquashfsアーカイブに入れます。そこから私のことができて、その中から画像。 mount -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に優れた圧縮をよカーネル内。


mikeservに感謝します。これはいい答えであり、私はそこから多くのことを学びました。
ヘリウム14

2
@Mohsen-私は完全に理解しており、おそらく同じことをしたでしょう。時々私たちが求める答えは私たちが得るものではありません-それはおそらく良いことです、なぜなら私たちはそもそも尋ねる必要があるからです。いずれにせよ、私はコメントをとても感謝しています。
mikeserv 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.