-1

Я полностью переписал этот вопрос, поскольку я не очень хорошо описал его в первой попытке, но это все тот же вопрос. Допустим, у вас есть куча файлов разного размера, и вам нужно поместить их на диски, чтобы сделать их резервную копию. Эти файлы не нуждаются в сохранении каких-либо каталогов и не должны храниться в каком-либо определенном порядке. Конечная цель - просто оставить наименьшее количество свободного места на диске. Я не хочу использовать программу сжатия, такую как 7zip, для разделения архива по дискам, потому что если один диск потерян / поврежден, то все данные не читаются. Этот вопрос просто для того, чтобы узнать, КАК вы это сделаете, я знаю, что хранилище дешево, и что этот процесс может занять много времени. Мне просто любопытно и хочу узнать, как это будет сделано. Как очень простой пример смотрите ниже;

Я хочу хранить эти шесть файлов общим объемом 89 МБ на двух дисках по 50 МБ. Это очень простой пример. Увеличение количества файлов и увеличение количества случайных размеров - вот что, по-видимому, делает это невозможным, по крайней мере, с точки зрения ментального уравнения.
A.7z - 10 МБ
B.7z - 20MiB
C.7z - 30MiB
D.7z - 10MiB
E.7z - 07MiB
F.7z - 12 МБ
Если бы я пошел по заказу ABC, для этих файлов понадобился бы третий диск. Однако, если файлы B и C идут вместе на первом, а A, D, E и F идут на втором, это займет всего два диска.

1 ответ1

1

Существуют, по-видимому, более эффективные способы сделать это, особенно в крайних случаях, но я полагаю, что это обеспечит довольно плотное соответствие для общего случая.

  1. Возьмите копию всех файлов и сожмите их по отдельности, используя лучшую программу сжатия, которую вы можете использовать. (7z или xz?)

  2. Глядя на сжатые файлы, найдите самый большой сжатый файл, который уместится на диске, затем самый большой сжатый файл, который уместится и повторяется до тех пор, пока не останется свободного места. Сжатие несжатых версий каждого из этих файлов на диск в виде одного архива. Если оставшееся место не меньше оставшихся сжатых файлов, повторите этот процесс, добавив еще больше несжатых версий сжатых файлов. (Возможно, что сжатие нескольких файлов приведет к лучшему сжатию, чем исходные файлы - как из-за потерянного места в конце файлов, так и из-за лучших словарей, обеспечивающих лучшее сжатие при сжатии большего количества данных).

  3. Удалите сжатые отдельные файлы, которые уже были сжаты в окончательный архив.

  4. Повторите шаги 2-3, пока не останется больше файлов.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .