Поиск по сайту:

Как разделить большой файл архива на несколько небольших файлов с помощью команды «Разделить» в Linux


На этой странице

  1. Как разделить большие архивы
  2. Заключение

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

Итак, что же делать в подобных случаях? Есть ли решение этой проблемы? Что ж, да. Одним из решений является разделение сжатого файла на более мелкие части, которые можно легко передавать по сети. В пункте назначения вы можете соединить их обратно, чтобы получить исходный архив.

Если решение звучит интересно, и вы хотите точно понять, как это можно сделать в Linux, вы будете рады узнать, что в этом руководстве шаг за шагом обсуждаются все важные детали.

Прежде чем мы продолжим, обратите внимание, что все инструкции и команды, упомянутые в этой статье, были протестированы на Ubuntu 14.04.

Как разделить большие архивы

Существует утилита командной строки, получившая название Split, которая помогает разбивать файлы на части. Он устанавливается из коробки в большинстве дистрибутивов Linux, поэтому вам не нужно выполнять никаких дополнительных действий для его загрузки и установки. Ниже приведен синтаксис этой команды:

split [OPTION]... [INPUT [PREFIX]]

Здесь INPUT представляет собой имя файла, который необходимо разделить на более мелкие биты, а PREFIX — это текст, который вы хотите добавить в качестве префикса к имени выходных файлов. OPTION в нашем случае будет -b, чтобы мы могли указать размер выходных файлов.

Чтобы понять использование разделения на примере, вам нужно сначала иметь сжатый файл, который вы хотите разделить. Например, в моем случае у меня был следующий ZIP-файл размером 60 МБ:

Вот команда Split в действии:

Итак, как видите, используя параметр -b, я попросил команду «Разделить» разбить большой ZIP-файл на равные части по 20 МБ каждый, предоставив полное имя сжатого файла, а также текст префикса.

Вот как я убедился, что команда Split действительно сделала то, о чем ее просили:

Как видно из вывода на снимке экрана выше, в выводе были созданы три файла с именами, включающими префикс, который я предоставил, и весом 20 МБ каждый.

Конечно, помимо файлов .zip, вы можете использовать вышеупомянутый метод для разделения и других типов сжатых файлов. Например, вот как я использовал ту же команду, которую мы обсуждали ранее, для разделения файла .tar.xz:

Как вы уже поняли, если вы хотите разделить файл на несколько фрагментов, которые должны иметь размер в МБ, вам нужно использовать букву M с числовым значением, которое вы указываете в команде линия. И если, как в случае, который мы только что обсуждали, файлы должны иметь размер в КБ, вы должны использовать букву K.

До сих пор мы использовали только параметр -b, предлагаемый командой Split; это потому, что он делает то, что мы хотим - скажите команде разделить входной файл на основе размера, который следует за этой опцией в командной строке. Однако в зависимости от вашего случая и требований вы можете захотеть использовать некоторые другие параметры, предоставляемые командой «Разделить».

Ниже приведен список опций вместе с кратким объяснением того, что они делают:

  • -a, --suffix-length=N : генерировать суффиксы длины N (по умолчанию 2)
  • --additional-suffix=СУФФИКС : добавить дополнительный СУФФИКС к именам файлов.
  • -b, --bytes=SIZE : поместить SIZE байтов на выходной файл
  • -C, --line-bytes=SIZE : помещать не более SIZE байтов строк в выходной файл
  • -d, --numeric-suffixes[=FROM] : использовать числовые суффиксы вместо буквенных. FROM изменяет начальное значение (по умолчанию 0).
  • -e, --elide-empty-files : не генерировать пустые выходные файлы с -n
  • --filter=КОМАНДА: записать в оболочку КОМАНДУ; имя файла $FILE
  • -l, --lines=ЧИСЛО : поместить ЧИСЛО строк в выходной файл
  • -n, --number=CHUNKS : генерировать выходные файлы CHUNKS.
  • -u, --unbuffered : немедленно скопировать ввод в вывод с помощью -n r/...

До сих пор мы обсуждали только то, как разделить большой архив на несколько более мелких частей. Излишне говорить, что это бесполезно, пока вы не узнаете, как соединить их обратно, чтобы получить исходный сжатый файл. Итак, вот как вы можете это сделать:

Специальной утилиты командной строки для объединения небольших фрагментов не существует, так как с этой задачей справляется старая добрая команда Cat. Например, вот как я получил файл Kaku-linux32.zip с помощью команды Cat:

Вы можете извлечь полученный архив и сравнить его с исходным, чтобы убедиться, что ничего не изменилось.

Заключение

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

Если вы используете другой подход для разделения больших архивов, а затем объединяете их обратно и хотите поделиться своим решением с другими, вы можете сделать это в комментариях ниже.