我有这个文件结构:
2000/
001.txt
002.txt
003.txt
...
2001/
...
2002/
...
...
2011/
我猜文件结构并不重要,但无论如何......
所以文件夹代表几年,里面有一些文本文件。
现在我使用 Nautilus 压缩上下文菜单(存档管理器)的tar.gz
格式压缩所有内容。我选择这种格式是因为虽然它需要更多空间bz2
,但当我需要查询内部数据时,它会快得多。
在此之后,我创建了包含有关存档内容 (大小为 170 KB) 的参考帮助文本文件并希望将其添加到存档中,因此我只需将此文件拖放到 Nautilus 中创建的存档中即可。
会发生两件不好的事情:
将文件拖放到存档中会将整个存档提取到临时文件夹中,然后再次重新压缩所有文件!这对于大型存档来说太糟糕了,我希望以后能在终端中找到更好的方法
初始存档大小约为 96 MB,现在只需添加这个 170 KB 的文本文件,存档就变成 140 MB!我检查了里面的内容和这个小文本文件
为什么是这样?
我刚刚创建了包含两个子文件夹内容的档案,然后拖放大小为 100 字节的文件:
$ gzip -l tmp-original.tar.gz
compressed uncompressed ratio uncompressed_name
13297512 69908480 81.0% tmp-original.tar
$ gzip -l tmp-updated.tar.gz
compressed uncompressed ratio uncompressed_name
19231941 69908480 72.5% tmp-updated.tar
答案1
关于第一点,据我所知,tar
终端命令无法将文件附加到压缩档案(例如您的 .gz 档案),因此需要先解压缩档案,然后添加附加文件,然后重新压缩。一种解决方法是使用以下命令挂载压缩档案archivemount
(此处有说明),它允许您挂载压缩档案、附加文件以及卸载它。我不能说这是否比解压缩、附加和重新压缩更快。