Назад | Перейти на главную страницу

резервные копии файлов с множеством дублированных файлов

Мне часто нужно делать резервную копию группы файлов, в которых много подпапок, содержащих несколько больших идентичных файлов.

Существует ли схема сжатия (.zip, .7z и т. Д.), Которая может автоматически определять это и не сохранять идентичные файлы более одного раза?

Я тоже только что прошел через это.

Если вы сжимаете свои файлы в Tar Ball, сжатие 7z LZMA может или не может распознать дубликаты, если они слишком далеко разделены в Tar Ball (это функция размера словаря и некоторых других вещей).

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"

Он работает хорошо, попробуйте.

Предлагаю 3 варианта, которые пробовал (в Windows):

  1. Сжатие 7zip LZMA2 с размером словаря 1536Мб
  2. "Сплошной" файл WinRar
  3. 7zip файл WIM

У меня было 10 папок с разными версиями веб-сайта (с такими файлами, как .php, .html, .js, .css, .jpeg, .sqlи т. д.) общим размером 1Гб (В среднем 100 МБ на папку). В то время как стандартное сжатие 7zip или WinRar дало мне файл размером около 400/500 МБ, эти параметры дали мне файл размером (1) 80Мб, (2) 100 Мб и (3) 170 Мб соответственно.

Да, это возможно: 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