Как сжать и разбить файлы в Ubuntu
Важно: повторное сжатие уже сжатых файлов (JPG, MP4, ZIP) даёт мало эффекта; для них лучше использовать режим «store» в архиваторах.
Зачем сжимать и разбивать файлы
Кратко: большие файлы неудобно передавать по сети, хранить на файловых системах с лимитами размера файлов или загружать на сервисы с ограничением по объёму. Разбиение на части позволяет:
- отправлять файлы по электронной почте или загружать на файлообменники с лимитами;
- хранить бэкапы на носителях с ограничениями по размеру;
- облегчить ресумируемую загрузку и передачу.
Определения в одну строку:
- Сжатие — уменьшение размера данных путём кодирования избыточности.
- Разбиение — разделение одного файла на несколько частей фиксированного размера.
Основные варианты и их применение
H1 (главная идея): один архив можно разделить на части двумя основными подходами:
- Классический набор Unix-инструментов (tar + bzip2 + split) — всегда доступен и хорошо контролируется.
- Современные архиваторы (7z/p7zip) — дают лучшее сжатие и удобнее собирают части при распаковке.
Ниже — подробные шаги и рекомендации по каждому варианту.
Классический подход: tar + bzip2 + split
Когда использовать: если вы хотите минимизировать внешние зависимости и сохранить совместимость с POSIX-утилитами.
- Откройте терминал (CTRL+ALT+T). Перейдите в папку с большим файлом и создайте подпапку для частей:
mkdir split
cd split- Сожмите и одновременно разлейте поток на части. Команда создаёт tar-архив, сжимает его bzip2 и передаёт на вход split:
tar -cvjf - ~/Data/Windows10.iso | split -b 50m -d - "Windows10_ISO.tar.bz."Объяснение:
- tar -c создаёт архив, -v показывает процесс, -j включает bzip2, -f - означает «записать в stdout»;
- split -b 50m делит поток на части по 50 мегабайт (замените 50m на любое значение, например 700m для записи на CD);
- опция -d указывает числовую нумерацию частей, а последняя строка — базовое имя файлов, к которому split добавит номера.
Результат: в папке split появятся файлы вида Windows10_ISO.tar.bz.00, Windows10_ISO.tar.bz.01 и т. д.
- Восстановление оригинала: сначала соберите части в один файл, затем извлеките архив:
cat Windows10_ISO.tar.bz.* > Windows10_ISO.tar.bz
tar -xvjf Windows10_ISO.tar.bzСоветы и примечания:
- Проверяйте суммы частей (md5/sha256) перед пересылкой, чтобы убедиться, что файлы не повреждены.
- Для быстрой компрессии можно заменить -j (bzip2) на -z (gzip) — gzip быстрее, но хуже сжимает.
Современное решение: 7zip (p7zip)
Когда использовать: если нужна лучшая степень сжатия и простое восстановление — 7z автоматически читает многотомные архивы.
Установка p7zip на Ubuntu:
sudo apt update
sudo apt install p7zip-fullСоздание многотомного архива (каждая часть — 50 МБ):
7z -v50m a Windows10_iso.7z ~/Data/Windows10.isoОбъяснение:
- -v50m задаёт размер тома (50 мегабайт);
- a — команда добавить (archive);
- Windows10_iso.7z — базовое имя архива; 7z создаст файлы Windows10_iso.7z.001, Windows10_iso.7z.002 и т. д.
Извлечение: для распаковки достаточно запустить распаковщик по первой части — 7z автоматически прочитает все остальные:
7z e Windows10_iso.7z.001Плюсы 7z:
- выше сжатие по сравнению с gzip/bzip2 для многих типов данных;
- поддержка шифрования и проверки целостности;
- удобная работа с многотомными архивами.
Когда разбиение и сжатие не помогут (контрпримеры)
- Уже сжатые форматы (JPEG, MP4, PNG, MP3) почти не уменьшатся при повторном сжатии — потеря времени и CPU.
- Шифрованные контейнеры и некоторые бинарные форматы имеют низкую сжимаемость.
- Разбиение не уменьшит количество файлов: если требуется отдельная компрессия каждой записи, лучше архивировать по файлам.
Альтернативные инструменты и подходы
- pigz — многопоточный gzip; полезен, если вам важна скорость и есть многоядерный CPU: tar -cvf - . | pigz -p 8 > archive.tar.gz
- plzip — многопоточный LZMA/LZMA2 (аналог bzip2, но с поддержкой многопоточности)
- zstd — современный компрессор с хорошим компромиссным соотношением скорости/сжатия и поддержкой уровней; имеет встроенный режим для потоков и разбиения
Выбор зависит от приоритетов: скорость (pigz), степень сжатия (7z, zstd), совместимость (gzip/tar).
Шпаргалка команд (cheat sheet)
- Создать подпапку и перейти в неё:
mkdir split
cd split- tar + bzip2 + split (50 МБ части):
tar -cvjf - /путь/к/файлу | split -b 50m -d - "Имя_архива.tar.bz."- Собрать части и распаковать:
cat Имя_архива.tar.bz.* > Имя_архива.tar.bz
tar -xvjf Имя_архива.tar.bz- 7z: создать тома по 50 МБ и распаковать:
7z -v50m a archive.7z /путь/к/файлу
7z e archive.7z.001- Проверить целостность (пример для 7z):
7z t archive.7z.001Критерии приёмки (проверки успешности)
- Все части присутствуют и имеют ожидаемые размеры.
- Контрольные суммы совпадают (md5/sha256) для исходного и восстановленного архива.
- Распаковка завершилась без ошибок, файлы читаемы и корректны.
Режимы зрелости и выбор для задач
- Экспериментальная/разовая передача: используйте 7z для простоты и лучшего сжатия.
- Регулярные резервные копии: автоматизируйте process с tar + zstd/pigz + split и храните контрольные суммы.
- Корпоративный бэкап с шифрованием: используйте 7z с шифрованием или создавайте зашифрованные контейнеры (LUKS) перед разделением.
Роль‑ориентированные чеклисты
Администратор:
- выбрать компрессор по бюджету CPU/IO;
- настроить периодическое тестовое восстановление;
- хранить контрольные суммы и логи.
Разработчик / пользователь:
- определить размер тома согласно целевому каналу передачи;
- тестировать распаковку на чистой машине;
- использовать явные пути и имена для автоматизации.
Отказ и откат (краткий runbook)
Если архив не распаковывается:
- Проверьте, все ли части присутствуют (ls -l Имя_архива.*).
- Проверьте контрольные суммы (sha256sum).
- Попробуйте собрать части в единый файл и выполнить тест распаковки: tar -tvjf или 7z t.
- Если отдельная часть повреждена, попытайтесь получить её заново от отправителя или из резервной копии.
Безопасность и конфиденциальность
- Если архив содержит личные или критичные данные, шифруйте его до передачи (7z поддерживает AES-256).
- Храните пароли для архивов в надёжном менеджере паролей; не пересылайте их вместе с частями архива.
- Для юридических требований (GDPR и др.) обеспечьте шифрование и журналирование доступа к архивам.
Быстрые рекомендации (на одну строку)
- Нужна максимальная совместимость — gzip + tar, разбиение через split.
- Нужна максимальная степень сжатия — p7zip (7z).
- Нужна скорость на многопроцессорной машине — pigz или plzip.
Краткий словарь
- tom (том) — одна часть многотомного архива;
- stdout — стандартный поток вывода в Unix;
- split — утилита для разделения данных на части.
Заключение
Сжатие и разбиение файлов в Ubuntu — стандартная задача, решаемая как классическими инструментами (tar + split), так и современными архиваторами (7z). Выбор зависит от требований к совместимости, скорости и степени сжатия. Всегда проверяйте целостность, храните контрольные суммы и шифруйте чувствительные данные.
Поделитесь своим опытом: какие инструменты вы используете для многотомных архивов и какие настройки оказываются наиболее удобными в вашей среде?









Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента