Сценарии сжатия (ZIP или TAR), чтобы быть сделанным в блоках

Я пытаюсь найти утилиту или подход там, который позволит мне сжимать весь каталог в блоки. Я знаю, что легко указать, например, что созданные архивные файлы должны быть точно X размерами или меньший, но утилиты архива обычно делают его так, Вам нужны все архивные файлы для открытия архива, и это - то, чего я стараюсь избегать. Я должен смочь указать максимальный размер архивного файла, и он добавляет файлы в него, пока он не собирается исчерпать пространство на следующем файле, таким образом, он запускает новый архивный файл. Тем путем архивные файлы технически независимы друг от друга.

Я сожалею, мне трудно выразить это словами точно. Прокомментируйте, не ли я достаточно конкретен.

3
задан 09.02.2010, 18:59

4 ответа

Это - понятие, это заинтересовало меня некоторое время, хотя я еще не имею вокруг к записи сценария для него, поскольку я был немного занят!

Нет никакого простого способа к программному обеспечению для реального знания то, до чего что-то сожмется, не петляя через алгоритм сначала (имейте в виду, tar является просто archiver, не утилитой сжатия, но можно использовать его с gzip). Другая (более легкая) опция состояла бы в том, чтобы продолжать добавлять файлы к архиву, затем проверять размер каждый раз. Я не знаю ни о каких предварительно сделанных решениях там для достижения этого, но это может быть реализовано в нескольких строках кода!

Основная логика была бы чем-то вроде этого:

alt text

Это зависит, на которой утилите Вы используете также. У некоторых нет переключателей, которые позволяют Вам легко удалять файл из архива, таким образом, Вы, возможно, должны добавить вторую входную переменную для дрейфа. Эта вторая переменная могла определить Ваш предполагаемый макс. размер файла в каталоге, и если бы архив является больше, чем тот размер далеко от предпочтительного размера, это добавило бы его к файлу. Если бы не было достаточного количества комнаты, то архив закрыл бы и создал бы новый. Конечно, Вы могли настроить этот алгоритм в бесконечность, удостоверившись, что размер следующего файла проверяется и по сравнению с текущим размером архива. Вы, вероятно, также хотели бы использовать самые большие файлы сначала, поэтому поскольку Вы видите, что большая логика может войти в это.

К сожалению, это не полное решение, но я надеюсь, что это - хорошая начальная точка!

2
ответ дан 08.12.2019, 01:11

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

Я не думаю, что что-либо делает то, что Вы просите из поля, поскольку оно потребовало бы сжатия-> размер проверки-> сжатие снова тип поведения.

1
ответ дан 08.12.2019, 01:11

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

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

После того как у Вас есть список zip-файлов, Вы могли начать копировать с верхней части списка, и когда CD полон, извлеките и продолжите копировать с той точки в списке со следующим CD. Это оставляет немного "потраченного впустую пространства" в конце каждого CD. Некоторые люди, если они получают в маленький файл далее вниз список, который помещается в то пространство, возвратятся и поместят тот небольшой файл в то иначе потраченное впустую пространство. Несколько человек одержимо пытаются перестроить, какой файл продолжается, какой диск для упаковки их всех максимально полных.

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

0
ответ дан 08.12.2019, 01:11

Насколько я знаю, afio поддерживает многотомную архивацию и позволяет восстанавливать данные из произвольных архивных файлов. Но файлы могут охватить два объема, таким образом, Вы могли бы закончить тем, что имели необходимость сделать что-то как

cat archive-3.afio archive-4.afio | afio -i -k -
0
ответ дан 08.12.2019, 01:11

Теги

Похожие вопросы