![我可以以压缩形式存储和使用目录吗?](https://linux22.com/image/69404/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BB%A5%E5%8E%8B%E7%BC%A9%E5%BD%A2%E5%BC%8F%E5%AD%98%E5%82%A8%E5%92%8C%E4%BD%BF%E7%94%A8%E7%9B%AE%E5%BD%95%E5%90%97%EF%BC%9F.png)
我必须处理许多以 tarball 形式发送的大型目录。但是,为了真正执行任何操作,必须将这些 tarball 解压到目录中并执行操作。大多数操作都涉及管道中的 coreutils 或基本 Linux 命令。是否可以使用这些目录来压缩它们?
答案1
正如克里斯托弗所建议的,archivemount
可以实现这一点。允许写入文件,卸载时,.tar.gz 文件会自动更新以反映更改。
# ls -lh download.tar.gz
-rw-rw-r--. 1 steve steve 3.1M Feb 16 2010 download.tar.gz
# archivemount download.tar.gz /mnt
# cd /mnt
# find . -ls|head
1 3127 drwxr-xr-x 0 root root 3201043 Dec 31 1969 .
2 0 drwxr-xr-x 0 steve steve 0 Aug 30 2006 ./kojoney
3 0 drwxr-xr-x 0 steve steve 0 Aug 30 2006 ./kojoney/reports
4 0 drwxr-xr-x 0 steve steve 0 Aug 30 2006 ./kojoney/reports/ip_country
5 9 -rwxr-xr-x 0 steve steve 9067 Dec 29 2006 ./kojoney/reports/ip_country/Geography-Countries-1.4.tar.gz
6 160 -rw-r--r-- 0 steve steve 162827 Apr 6 2006 ./kojoney/reports/ip_country/IP-Country-2.21.tar.gz
#
# rpm -qi archivemount
Name : archivemount
Version : 0.8.1
Release : 2.fc20
Architecture: x86_64
Install Date: Tue 21 Jul 2015 11:29:16 AM PDT
Group : System Environment/Libraries
Size : 75342
License : LGPLv2+
Signature : RSA/SHA256, Sun 13 Oct 2013 11:44:05 AM PDT, Key ID 2eb161fa246110c1
Source RPM : archivemount-0.8.1-2.fc20.src.rpm
Build Date : Sun 13 Oct 2013 10:34:48 AM PDT
Build Host : buildvm-10.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : http://www.cybernoia.de/software/archivemount/
Summary : FUSE based filesystem for mounting compressed archives
Description :
Archivemount is a piece of glue code between libarchive and FUSE. It can be
used to mount a (possibly compressed) archive (as in .tar.gz or .tar.bz2)
and use it like an ordinary filesystem.
#
答案2
是的,感谢保险丝,它允许文件系统由用户态程序实现。有许多 FUSE 文件系统,实现将文件存储为磁盘上扇区之外的其他内容,包括现有文件系统的备用视图、远程计算机上的文件、存档中的文件等。
您可以使用存档挂载将特定存档安装到目录。档案是可以修改的。
mkdir foo
archivemount foo.tar.gz foo
ls foo
echo hello >foo/new-file
fusermount -u foo
rmdir foo
tar tf foo.tar.gz
您可以使用AVFS访问所有档案,而无需为每个档案执行特定操作。 Avfs 创建整个目录树的视图,其中每个存档都有一个似乎包含文件内容的~/.avfs
伴随目录。ARCHIVE-FILE#
存档内容是只读的。
mountavfs
ls ~/.avfs$PWD/foo.tar.gz\#