フォルダを.tar.gzアーカイブに圧縮しました。開梱すると、体積はほぼ2倍になります。
du -sh /path/to/old/folder = 263M
du -sh /path/to/extracted/folder = 420M
私はたくさん検索した結果、tarが実際にメタデータを追加したり、他の奇妙な操作を実行することによってこの問題を引き起こすことがわかりました。
md5sumだけでなく、フォルダ内のファイル2つを比較しました。まったく違いはなく、チェックサムはまったく同じ値です。ただし、1つのファイルサイズは元のファイルサイズの2倍です。
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
私は他のアプローチを探しているのではなく、これらのファイルのサイズを元のサイズに戻す方法を探しています。
どうすればいいですか?
ベストアンサー1
[この回答はGNU tarとGNU cpを想定しています。]
まったく違いはなく、チェックサムはまったく同じ値です。ただし、1つのファイルサイズは元のファイルサイズの2倍です。
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