暗无天日

=============>DarkSun的个人博客

使用avfs直接挂载压缩文件

一直以来要读取压缩文件中的内容都是先把压缩文件解压,然后在访问里面的内容,在用完了之后再把压缩文件删除掉,或者把原压缩包删除掉。

这些操作不仅繁琐,而且解压文件后占用的磁盘空间也比较大,很可能有一个很大的压缩包,而我真正想要的只是里面的一个小文件,这样解压不仅浪费时间也浪费空间。

但是今天发现一个很棒的工具: avfs, 它可以直接把压缩文件挂载成目录!

使用方法很简单:

  1. 安装avfs

    sudo pacman -S avfs --noconfirm
    
    resolving dependencies...
    looking for conflicting packages...
    
    Packages (1) avfs-1.0.6-1
    
    Total Installed Size:  0.73 MiB
    Net Upgrade Size:      0.00 MiB
    
    :: Proceed with installation? [Y/n] 
    (0/1) checking keys in keyring                     [----------------------]   0%
    (1/1) checking keys in keyring                     [######################] 100%
    (0/1) checking package integrity                   [----------------------]   0%
    (1/1) checking package integrity                   [######################] 100%
    (0/1) loading package files                        [----------------------]   0%
    (1/1) loading package files                        [######################] 100%
    (0/1) checking for file conflicts                  [----------------------]   0%
    (1/1) checking for file conflicts                  [######################] 100%
    (0/1) checking available disk space                [----------------------]   0%
    (1/1) checking available disk space                [######################] 100%
    :: Processing package changes...
    (1/1) reinstalling avfs                            [----------------------]   0%
    (1/1) reinstalling avfs                            [######################] 100%
    :: Running post-transaction hooks...
    (1/1) Arming ConditionNeedsUpdate...
    
  2. 在$HOME下创建目录 .avfs

    mkdir ~/.avfs
    
  3. 运行命令 mountavfs

    mountavfs
    

    注意,你无需使用sudo就能直接运行

  4. ~/.avfs 中访问压缩包

    若你想访问 /path/to/compressed/file,那么你可以直接访问 ~/.avfs/path/to/compress/file#/ 就能看到压缩包中的内容了(注意文件名最后的#)。比如

    ls $HOME/Downloads/windows3.2.rar
    cd ~/.avfs/$HOME/Downloads/windows3.2.rar#
    pwd
    ls
    
    /home/lujun9972/Downloads/windows3.2.rar
    /home/lujun9972/.avfs/home/lujun9972/Downloads/windows3.2.rar#
    DISK1
    DISK2
    DISK3
    DISK4
    DISK5
    DISK6
    DISK7
    DISK8
    DISK9
    DISKA
    DISKB
    DISKC
    DISKD
    DISKE
    

与Dired配合

Dired是Emacs中用来进行文件管理的插件,通过 dired-avfs 插件,可以让Dired直接通过avfs打开压缩的文件

  1. 首先也是需要先运行 mountavfs
  2. 然后将光标移动到压缩文件上后,执行 dired-avfs-open

    Emacs_1557231513.png

  3. 然后就会发现进入压缩文件所表示的目录了

    screenshot-67.png