Как и большинство современных дистрибутивов Linux, Ubuntu по умолчанию включает в себя множество инструментов для любых нужд. Среди них вы найдете менеджер архивов, с помощью которого вы сможете хранить файлы в сжатых пакетах. Однако есть небольшая проблема: они все равно могут быть слишком большими для того, что вам нужно. В таких случаях лучше всего сжать и разделить файл на более мелкие части.
Хотя в Ubuntu есть инструменты именно для этого, к сожалению, Archive Manager не лучший вариант для таких задач. Тогда вам придется обратиться к терминалу. К счастью, этот процесс прост, и вы можете как сжимать, так и разбивать файлы на более мелкие фрагменты с помощью одной команды. Посмотрим, как это сделать.
Знайте степень сжатия
Прежде чем мы начнем, нам нужно кое-что объяснить обо всех формах сжатия, что в конечном итоге сэкономит вам драгоценное время: оно не суммируется.
Под этим мы подразумеваем, что если у вас есть несколько файлов с высокой степенью сжатия, вы не получите многого, если повторно сжать их с использованием другого типа сжатия. Предположим, вы хотите поделиться такими файлами, как уже сильно сжатые изображения JPG, видеофайлы MP4 или другие сжатые архивы. В этом случае нет смысла использовать самые высокие доступные настройки сжатия. Лучше выбрать «хранить» их (без сжатия) в архиве.
Однако для несжатых или слегка сжатых файлов, таких как файлы TXT, большие базы данных или несжатые носители, использование самых высоких настроек сжатия может привести к созданию файлов значительно меньшего размера.
Классический подход Linux
Предположим, вы хотите сжать файл, подобный используемому здесь ISO-образу Windows 10. Вы можете воспользоваться классическими инструментами, такими как tar
, split
и bzip
, чтобы сжать и разделить его на файлы меньшего размера.
1. Запустите свой терминал. Быстрый способ — нажать CTRL+ ALT+ T. Затем перейдите в папку, где находится большой файл, который вы хотите сохранить в разделенном архиве. Чтобы все было в порядке, создайте подпапку с названием «split», где мы будем хранить разделенный архив, с:
mkdir split
Затем введите:
cd split
- Используйте следующую команду, чтобы сжать файл или папку в разделенный архив:
tar -cvj FILENAME | split -b SIZE_OF_PARTS -d - "BASE NAME OF ARCHIVE"
Для нашего ISO-образа Windows 10 наша команда выглядела так:
tar -cvj ~/Data/Windows10.iso | split -b 50m -d - "Windows10_ISO.tar.bz."
- ~/Data/Windows10.iso – это путь и имя файла, который мы хотели сжать.
split -b 50m
сообщает, что мы хотим разделить наш архив на части по 50 МБ. Измените это значение в соответствии с желаемым размером.Windows10_ISO.tar.bz.
— имя файлов разделенного архива. Обратите внимание, что в конце есть дополнительная точка. Это связано с тем, что каждый фрагмент также будет иметь номер в конце, отражающий его положение в последовательности.
Вскоре, в зависимости от размера сжимаемых файлов и скорости вашего компьютера, вы найдете части разделенного архива в разделенной подпапке.
Если вы проверите их общий размер, он будет меньше, чем их общий размер в несжатом виде.
Чтобы вернуть исходные файлы, вам сначала придется собрать все части в один архив с помощью:
cat BASE_NAME_OF_PARTS.* > BASE_NAME_OF_PARTS.bz
Затем извлеките его содержимое с помощью:
tar -xvj REASSEMBLED_ARCHIVE.bz
В нашем случае две приведенные выше команды будут выглядеть так:
cat Windows10_ISO.tar.bz.* tar -xvj Windows10_ISO.tar.bz
Однако, как вы увидите дальше, мы можем добиться большего, используя более новый инструмент сжатия.
Современное решение для высокой степени сжатия
7Zip — это современный архиватор, предлагающий высокая степень сжатия , а также поддерживающий разделенные архивы. Таким образом, это лучшее решение поставленной задачи. Однако в Ubuntu его нет. Чтобы установить версию p7zip для Linux, используйте:
sudo apt install p7zip-full
Сжимать файлы в разделенный архив с его помощью даже проще, чем решение по умолчанию, которое мы видели раньше. Вам нужно только указать размер каждого разделенного файла, имя файла базового архива и то, что вы хотите сжать, с помощью:
7z -vSIZE_OF_SPLIT_FILES a ARCHIVE_FILENAME FILE_TO_COMPRESS
Для нашего примера ISO-образа Windows 10, чтобы сжать его в многочастный архив, где каждая часть будет иметь размер 50 МБ, команда выглядит так:
7z -v50m a Windows10_iso.7z ~/Data/Windows10.iso
Через некоторое время вы найдете результаты в разделенной подпапке, и они будут занимать меньший размер, чем если бы вы использовали подход tar-split-bzip, который мы видели ранее.
Чтобы вернуть файлы, извлеките только первый файл последовательности, а 7z автоматически обработает остальные:
7z e FIRST_PART_OF_COMPRESSED_ARCHIVE
В нашем примере это было:
7z e Windows10_iso.7z.001
Стоит также отметить, что в настоящее время у вас есть гораздо больше возможностей для создания сжатых архивов с помощью таких инструментов, как свинья или plzip.
Считаете ли вы практичными сжатые разделенные архивы? Какие инструменты сжатия вы используете для борьбы с ними? Расскажите нам в разделе комментариев ниже.