Filesystems
再次使提取的 tar 文件變小
我將一個文件夾打包並壓縮為 .tar.gz 存檔。打開包裝後,它幾乎是原來的兩倍大。
du -sh /path/to/old/folder = 263M du -sh /path/to/extracted/folder = 420M
我進行了很多搜尋,發現 tar 實際上是通過添加元數據或用它做其他奇怪的事情來引起這個問題的。
我對文件夾內的 2 個文件以及 md5sum 進行了比較。絕對沒有差異,校驗和是完全相同的值。然而,一個文件是原始文件的兩倍。
root@server:~# du -sh /path/to/old/folder/subfolder/file.mcapm /path/to/extracted/folder/subfolder/file.mcapm 1.1M /path/to/old/folder/subfolder/file.mcapm 2.4M /path/to/extracted/folder/subfolder/file.mcapm root@server:~# diff /path/to/old/folder/subfolder/file.mcapm /path/to/extracted/folder/subfolder/file.mcapm root@server:~# root@server:~# md5sum /path/to/old/folder/subfolder/file.mcapm root@server:~# f11787a7dd9dcaa510bb63eeaad3f2ad root@server:~# md5sum /path/to/extracted/folder/subfolder/file.mcapm root@server:~# f11787a7dd9dcaa510bb63eeaad3f2ad
我不是在尋找不同的方法,而是尋找一種將這些文件的大小再次減小到原始大小的方法。
我怎樣才能做到這一點?
$$ this answer is assuming GNU tar and GNU cp $$
絕對沒有差異,校驗和是完全相同的值。然而,一個文件是原始文件的兩倍。
1.1M /path/to/old/folder/subfolder/file.mcapm 2.4M /path/to/extracted/folder/subfolder/file.mcapm
該
.mcapm
文件可能是稀疏的。創建存檔時使用-S
(--sparse
)選項。tar
例子:
$ dd if=/dev/null seek=100 of=dummy ... $ mkdir extracted $ tar -zcf dummy.tgz dummy $ tar -C extracted -zxf dummy.tgz $ du -sh dummy extracted/dummy 0 dummy 52K extracted/dummy $ tar -S -zcf dummy.tgz dummy $ tar -C extracted -zxf dummy.tgz $ du -sh dummy extracted/dummy 0 dummy 0 extracted/dummy
之後您還可以使用以下命令“重新稀疏”文件
cp --sparse=always
:$ dd if=/dev/zero of=junk count=100 ... $ du -sh junk 52K junk $ cp --sparse=always junk junk.sparse && mv junk.sparse junk $ du -sh junk 0 junk