Я пытаюсь найти утилиту или подход, которые позволят мне сжать весь каталог на куски. Я знаю, что легко указать, например, что создаваемые архивные файлы должны иметь размер X или меньше, но архивные утилиты обычно делают это так, что вам нужны все архивные файлы, чтобы открыть архив, и это то, что я пытаюсь избегать. Мне нужно указать максимальный размер файла архива, и он добавляет в него файлы до тех пор, пока в следующем файле не закончится место, поэтому он запускает новый файл архива. Таким образом файлы архива технически независимы друг от друга.
Извините, мне сложно выразить это словами. Прокомментируйте, если я недостаточно конкретен.
Иногда я в такой же ситуации, много большие файлы должны быть сжаты в несколько архивы. Поскольку я также не нашел инструмента, который соответствовал бы моим потребностям, я придерживаюсь другого подхода.
Все маленький (например, не более 100 МБ) файлы попадают в один архив, то большой (например, 500 МБ и больше) файлы будут сжаты в единый архив каждый. Поэтому я просто передаю содержимое каталога в текстовый файл и конвертирую его в простой пакетный файл:
каталог:
file1.dat
file2.csv
file3.mdf
сценарий:
zip -9 file1.dat.zip file1.dat
zip -9 file2.csv.zip file2.csv
zip -9 file3.mdf.zip file3.mdf
Это немного вручную, но работает для меня, надеюсь, что это немного поможет. ;-)
Если вы используете GNU tar, я думаю, вы можете указать -L
(длина ленты, в килобайтах) - я считаю, что полученные «ленты» можно распаковать самостоятельно.
Не уверен, как функция «смены ленты» ведет себя с файлами (или сжатием), поэтому сначала поэкспериментируйте :-)