You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何挂载包含大量.gz压缩文件的目录以直接访问解压后的文件

如何挂载包含大量.gz压缩文件的目录以直接访问解压后的文件

嗨,我之前也碰到过和你一模一样的需求,确实有几个基于FUSE的工具能完美解决这个问题,而且默认都是只读模式,完全符合你的要求:

1. 使用Archivemount(最推荐的通用方案)

这是我最常用的工具,它能自动识别目录里的各类归档文件(包括.gz、.zip、.tar等),挂载后每个压缩文件会变成一个可直接访问的目录,里面就是解压后的内容。

  • 首先安装它(不同发行版命令略有差异):
    • Debian/Ubuntu系:sudo apt install archivemount
    • RedHat/CentOS系:sudo dnf install archivemount
  • 然后执行挂载命令:
    archivemount /path/to/your/gz-files-directory /path/to/your/mount-point
    
    替换成你实际的源目录和挂载点路径就行。
  • 用完之后卸载:
    umount /path/to/your/mount-point
    

2. 使用gvfs(你之前提到的工具)

其实gvfs确实能做到,只是你可能没找对正确的用法。它需要先启动gvfs的FUSE挂载服务,然后通过虚拟路径访问:

  • 先确保gvfs相关包已安装(一般桌面环境默认都有),然后启动gvfsd-fuse:
    gvfsd-fuse ~/.gvfs
    
  • 接下来挂载你的.gz目录:
    gvfs-mount archive:///path/to/your/gz-files-directory
    
  • 之后你就能在~/.gvfs/archive:host=/path/to/your/gz-files-directory路径下,直接访问每个.gz文件解压后的内容了。

3. 针对单个.gz文件的专用工具(gzfuse)

如果你的场景里大部分是单个文件的.gz压缩包,也可以用gzfuse,它是专门针对gzip文件的轻量FUSE工具:

  • 安装:sudo apt install gzfuse(Debian/Ubuntu系)
  • 挂载单个文件:gzfuse your-file.gz /path/to/mount-point
  • 要是想批量处理目录里的所有.gz文件,可以写个简单的shell循环,给每个文件单独创建挂载点,但这种方式不如archivemount方便,所以更推荐第一个方案。

一些小提示

  • 所有这些工具默认都是只读模式,完全不用担心误修改原压缩文件;
  • 挂载期间不要删除原目录里的.gz文件,否则挂载点里的对应内容会立刻消失;
  • 卸载时一定要确保没有程序正在访问挂载点里的文件,否则可能会报错。

备注:内容来源于stack exchange,提问作者dargaud

火山引擎 最新活动