Убрать операции работы с файлами у архиватора))
Просуммировать размер заголовков zip * количество файлов * 2, заголовков блоков (от количества файлов и их длины зависит) и самих блоков. Вот .zip без сжатия точно будет не больше этого. А со сжатием — ну как повезёт. Вот действительно — сжать в /dev/null и посмотреть.
Не хотел сжимать в нулл. Думал, какой-нибудь индикатор энтропии есть простой
Без исполнения самого алгоритма сжатия, думаю, это невозможно. Алгоритм ведь не знает, какие именно байтики ты ему передашь, поэтому неизвестно, какой результат на выходе будет. Может, 1000 одинаковых байтов, а может 1000 максимально разных. Так что самый надёжный вариант - просто пропатчить архиватор (убрать операции работы с файлами), чтобы он тупо выполнял алгоритм, но никуда не писал, и выдаст тебе выходной размер (а с учётом, что работа с файлами пропатчена - это будет быстрее, чем запись в /dev/null).
Мне везде мерещатся предугадывательные алгоритмы. Надо подумать. Что-то вроде прочитать блок, проанализировать, прочитать другой блок, если они похожи, то ткнуть очень подальше. Если все блоки похожи, то скорее всего хорошо сожмётся.
Это будет пальцем в небо. Но если тебе этого достаточно...
В известном смысле. Но это будет дешевле, чем сжимать 4 ТБ, а потом узнать, что сжалось плохо.
Обсуждают сегодня