是否可以将 zip 和 tar.gz 文件作为目录集成到文件系统中

是否可以将 zip 和 tar.gz 文件作为目录集成到文件系统中

我想知道是否有一种方法可以将压缩文件作为目录集成到文件系统中(我认为这与挂载有点不同)?

例如,人们可以将文件下载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有关详细信息,请参阅手册页。它通常没有安装,因此您可能需要安装该软件包。它也被称为archivemount.以 Fedora 19 为例:

$ sudo yum install archivemount

参考

答案2

你要么在谈论FUSE文件系统(用户空间中的文件系统 - Linus称它们为玩具或自定义编译的内核或squashfs. Squash不完全如您所描述的那样 - 例如,您不能简单地安装 tarball - 无论如何,不​​能使用内核支持的 VFS - 但您当然可以mksquash任意数量的文件或目录并将生成的存档安装为只读。您可以选择xz, lzma, or gz压缩方式。Squash一直在使用 - 如果您曾经使用过实时 Linux 映像,那么很有可能它是squashed.

我会告诉你一个我使用的技巧,squashfs.我喜欢创建一个btrfs图像文件,并用btrfstune -S 1它来制作一个seed体积。然后我将该图像放入squashfs档案中。从那里我可以mount -o loop看到图像。 image.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"

突然我就利用了btrfsscopy-on-write功能和自动写入压缩 squashfs卓越的压缩全部存储在 RAM 中在内核中。

答案3

您可以使用avfs进而使用 shell 函数使其更易于使用(例如acd compressed-file.tar.gz)。

相关内容