Разделение на множество файлов .ZIP с использованием 7-Zip

12

Если у меня есть папка размером 100 ГБ, и я разделяю ее на ZIP, есть ли разница в том, сколько места на диске используется, если я разделю ее на 100 .ZIP-файлов по 1 ГБ каждый или 10 .ZIP-файлов по 10 ГБ каждый?

Занимают ли 100 .ZIP-файлов по 1 ГБ каждый больше, чем 10 .ZIP-файлов по 10 ГБ каждый?

Kong
источник
И вы не можете узнать, потому что?
Дейв
5
Почему ты не можешь просто попробовать это?
Питер Мортенсен
1
Каждый автономный ZIP-файл имеет некоторые накладные расходы. Тем не менее, вы можете разбить ZIP-файл на части, которые можно собрать. У этих частей нет издержек ZIP в каждом из них, и если вы разделяете границы сектора или блока, они не содержат потерянного пространства.
fixer1234

Ответы:

18

Давай выясним!

100 МБ файлов (27 штук):

7z a -tzip -v100M ./100m/archive ./kali-linux-xfce-2018.2-amd64.iso

$ du ./100m/
2677884 ./100m/

10 МБ файлов (262 штуки):

7z a -tzip -v10M ./10m/archive ./kali-linux-xfce-2018.2-amd64.iso

$ du ./10m/
2677908 ./10m

Результаты: разделенный архив на 10 МБ занимает дополнительные 24 КБ. Так что да, есть разница: файлы размером 100 ГБ занимают больше места, чем файлы размером 10-10 ГБ.

Разница кажется незначительной, хотя. Я бы пошел на то, что вам удобнее.

Лейн Бернардо
источник
4
duпо умолчанию не выводит размер в байтах (если только ваши 270M файлов не превратились в 2677908 байт). Он отображает размер файлов на диске, который может отличаться от фактического размера данных (может применяться для загрузки или хранения в других файловых системах)
Xen2050
Вы правы, это фактически вывод в КБ. Я отредактировал ответ, чтобы исправить это несоответствие. Исходный файл представляет собой Kali Linux ISO, он составляет ~ 2,6 ГБ. У вас есть хорошая точка зрения относительно размера на диске по сравнению с фактическим размером данных, я специально думал о размере на диске, потому что он учитывает накладные расходы на наличие дополнительных файлов, но вы правы, что это будет отличаться в зависимости от того, что вы ' на самом деле делать с архивами.
Лэйн Бернардо
Извините, я пересек с вашим в значительной степени похожим ответом, когда я дважды проверял строки выполнения.
AFH
Максимальный размер Zip-файла составляет 4 ГБ.
pbies
1
Да, именно поэтому я не удосужился рассчитать процент. Я не думаю, что это работает до плоского процента от исходного размера файла, особенно учитывая различия в файловых системах.
Лэйн Бернардо
15

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

Могут быть дополнительные байты, используемые дополнительными записями каталога, но они не будут отображаться, если каталог теперь не занимает дополнительный логический сектор.

Разделенные файлы идентичны по содержанию файлам, созданным двоичной программой-разделителем с таким же размером разделения.

Я проверил их в Linux, используя версию GUI для файла размером 7+ МБ, предоставив 8 разделенных файлов размером 1 МБ с помощью 7-Zip ( File.7z.00?), а затем создал один полный архив ( Full.7z), который я разделил: -

7z -v1000000 a File;                                         # Create split volumes File.7z.00?
7z a Full File;                                              # Create full archive Full.7z
split -b 1000000 -a 3 --numeric-suffixes=1 Full.7z Full.7z.; # Split full archive into Full.7z.00?
for f in {001..008}; do cmp Full.7z.$f File.7z.$f; done;     # Compare splits with 7z volumes

Для тестирования на другой ОС вам может понадобиться загрузить или написать соответствующую программу-разветвитель.

AFH
источник