我经常需要做一组文件的备份,其中有许多子文件夹,其中包含几个大的,相同的文件。
有压缩scheme(.zip,.7z等),可以自动检测到这一点,而不是多次存储相同的文件?
是的,这是可能的: https : //superuser.com/questions/479074/why-doesnt-gzip-compression-eliminate-duplicate-chunks-of-data
这是我想出的一个例子:
[jay test]$ tree . . `-- compressme |-- a | `-- largefile (10MB) `-- b `-- largefile (10MB, identical to ../a/largefile) 3 directories, 2 files [jay test]$ du -sh compressme/ 21M compressme/ [jay test]$ tar -cf compressme.tar compressme/ [jay test]$ du -sh compressme.tar 21M compressme.tar [jay test]$ lzma -9 compressme.tar [jay test]$ du -sh compressme.tar.lzma 11M compressme.tar.lzma
我也是经历过这个。
如果你将文件压缩成一个Tar Ball,7z的LZMA压缩可能会或者可能不会识别重复的内容,如果它们在Tar Ball中分离得太远(这是字典大小和其他一些function的函数)。
7z有一个收集重复的WIM格式,那么你可以在那里使用正常的LZMA压缩。 Windows命令行示例:
7z a -twim "Example.wim" * 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -mhc=on "Example.7z" "Example.wim" del "Example.wim"
它运作良好,给它一个去。
我build议我已经尝试了3个选项(在Windows中):
我有10个不同版本的网站文件夹(文件如.php , .html , .js , .css , .jpeg , .sql等),总大小为1Gb( 平均每个文件夹100Mb )。 虽然标准的7zip或WinRar压缩给我一个约400 / 500Mb的文件,这些选项给了我一个(1) 80Mb ,(2)100Mb和(3)170Mb的文件。