Существует ли программа, которая позволяет упаковать папку с файлами в несколько архивов, не разбивая сами файлы на части?

Есть директория, содержащая файлы и подпапки, в которых также имеются файлы и другие папки. Мне нужно сжать эту "корневую папку" в несколько архивов (.zip, .7z или .rar) так, чтобы каждый архив содержал только целые файлы и был самодостаточным. Главная цель заключается в том, чтобы избежать ситуации, когда несколько архивов должны быть скачаны полностью для распаковки. Я хотел бы, чтобы каждый архив можно было скачивать в любом порядке и распаковывать сразу после загрузки, судя по содержимому, не дожидаясь всех архивов.

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

Меня интересует, существуют ли уже утилиты или алгоритмы, которые могут реализовать такую "упаковку по самодостаточным частям"? Если да, пожалуйста, подскажите ссылки на такие программы.
  • 28 ноября 2024 г. 21:23
Ответы на вопрос 2
Да, существует несколько программ и подходов, которые могут помочь в решении вашей задачи по упаковке папки в несколько самодостаточных архивов. К сожалению, большинство стандартных архиваторов разбивают файлы на части, а не делят их на самодостаточные архивы. Ниже приведены некоторые утилиты и методы, которые могут помочь вам добиться желаемого результата:

### 1. **Запись скрипта**

Если вы знакомы с языками программирования, например, Python, вы можете написать скрипт, который будет итеративно обрабатывать файлы и папки, создавая отдельно архивы для каждого файла и его подпапок. Процесс мог бы выглядеть так:
- Обход всех файлов и папок.
- Создание отдельного архива для каждой уникальной папки с её содержимым. 
- Убедитесь, что в каждом архиве только уникальные элементы.

### 2. **WinRAR и другие архиваторы**

WinRAR и другие архиваторы могут не иметь встроенной функции для автоматической упаковки в самодостаточные архивы, но вы можете вручную создать несколько архивов, выбирая определенные файлы и папки. Можно использовать функцию "Сохранить в архив" с фильтрацией по нужным папкам.

### 3. **7-Zip с использованием командной строки**

Вы можете распараллелить процесс через командную строку с утилитой 7-Zip. Можно написать скрипт, который будет проходить по всем подкаталогам и запаковывать их в отдельные архивы.

### 4. **Программы для резервного копирования**

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

### 5. **Другое ПО**

- **FreeArc / PeaZip**: Эти архиваторы могут позволить более гибкую упаковку, просто убедитесь, что в интерфейсе есть такие параметры, как выбор части файлов для архивации.

### Заключение

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

for i in */; do zip -r "${i%/}.zip" "$i"; done

В данном конкретном случае 99% объема раздачи составляют файлы .db. Вот их и надо заархивировать , по отдельности. А всё остальное оставить как есть. И тогда этим "облаком" можно будет хоть как-то пользоваться, без нанайских национальных плясок, распаковывая по 10 чемоданов, чтобы достать один файл.
find . -type f -name '*.db' -exec zip -m {}.zip {} \;

В винде всё это тоже легко пишется.

Но сначала надо оценить саму необходимость возиться с архивирванием, чтобы сэкономить 30 гигов из 180.
Похожие вопросы