我每年會備份一次個人檔案。 硬碟上有歷年的 .tgz 備份檔。 有時需要把舊文件挖出來看。 問題是: 不記得我要的檔案在哪一年份的備份裡。 於是逐年 [解壓縮、 搜尋、 刪掉] 直到找到為止, 有點麻煩。 今天終於發現一招好用的方案: 採用 AVFS。
首先安裝 avfs 套件: sudo apt install avfs
。
然後用普通用戶的身份執行 mountavfs 。
再下 mount 指令查看, 會看到多出一列類似這樣:
avfsd on /home/$USER/.avfs type fuse.avfsd (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
進入 /home/$USER/.avfs/home/$USER ,
裡面看起來跟家目錄沒什麼兩樣。
但是! 隨便找一個 .tgz 或 .zip 的壓縮檔,
在它的檔名後面加上 "#" , 就變成了一個目錄, 可以 cd 進去。
例如我有一個 /home/$USER/etc.tgz ,
於是我可以: cd /home/$USER/.avfs/home/$USER/etc.tgz#
(把 $USER 換成你的用戶名稱)。 就這樣, 超簡單。
以後就可以直接用 find 到每個壓縮檔裡面去找我要的檔案了!
用完以後, 可以下 umountavfs 取消 avfs。 不過因為反正它是唯讀的, 其實留著也沒差。
如果嫌 /home/$USER/.avfs 這個路徑太囉嗦,
也可以先 export AVFSBASE=/avfs
之類的,
然後才 mountavfs 。 前提是: $USER 這個用戶對掛載點必須有讀寫權限。
這是閱讀 /usr/bin/mountavfs (它是一個 shell script) 學來的。
另一種使用方式是採用 avfscoda, 不過安裝時這需要編譯 kernel 模組, 感覺比較麻煩; 最終的好處是跟既有的檔案系統整合, 不需要有另一個獨立的掛載點。 是說... 既然可以設定 AVFSBASE 改目錄, 這個優點好像也就沒那麼重要了。
* * * * *
昨天上課在 proxmox 上面遇到奇怪的問題, 今天爬文讀到這篇 fuse 檔案系統簡介, 發現了 avfs 這個好物, 然後下午的工作就歪樓了 orz 。 另一個透過 fuse 實現的好用功能是 SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)。 Fuse 可以把壓縮檔跟遠端伺服器的目錄通通納入本地的檔案系統底下, 這簡直是... 真的要征服宇宙了嗎?
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。