MyTetra Share
Делитесь знаниями!
Как разбить файл на несколько частей и как склеить файл из частей в Linux
Время создания: 17.11.2022 08:53
Текстовые метки: linux, файл, разбить, разделить, часть, кусок, склеить, соеденить, объединить
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1668664396jlxlnshkdp/text.html на raw.github.com

Если имеется большой файл, который необходимо переместить на другой компьютер через Flash-ку маленьких размеров, или нужно отправить файл по почте небольшими кусками, то пользователь ОС должен уметь разбивать файл на части и соединять их обратно.





В современном мире разумно использовать два подхода:


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


Первый подход имеет смысл использовать тогда, когда принимающая сторона не обладает достаточной квалификацией чтобы выполнять какие-то действия в консоли. Действительно, проще упаковать файл архиватором RAR или 7z с указанием разбивки на части. Тогда можно быть уверенным, что пользователь, получивший такие файлы-куски, сможет их распаковать общепринятыми способами.


Второй подход - это использование системных утилит ОС Linux, которые традиционно входят в базовую поставку любого современного дистрибутива.



Разбивка файла на части


Для разбивки файла на части, в ОС Linux имеется программа split за авторством Ричарда нашего М. Столлмана. Общий синтаксис у нее такой:



split как_разбить разбиваемый_файл префикс_имени_для_кусочков



Чтобы указать, как файл необходимо разбивать, используются следующие опции:



-b (она же --byte) - разбить файл на части указанного размера. Единица измерения 1 байт. В значении размера можно пользоваться буквами K, M, G. Например, опция -b 500K означает разбить файл на части по 500 килобайт.


-n (она же --number) - разбить файл на указанное число кусков.


-l (она же --lines) - используется для текстовых файлов. Файл разбивается на части, содержащие указанное количество строк.



Помимо опций разбивки файла, имеются и другие опции, которые можно посмотреть через команду man split. Однако самые часто используемые такие:



-d (от слова digit) - формировать имена частей с использованием чисел. Дело в том, что по умолчанию команда split будет добавлять к частям не номера частей, а следующие символы: aa, ab, ac и т. д. Это не очень удобно, и опция -d помогает увидеть привычную нумерацию частей.


-a - длинна нумерации итоговых файлов. По умолчанию установлено значение 2. Но если количество частей превысит значение zz (для символов) или 100 (для чисел), то можно указать -a 3 или еще большее число.



Примеры разбивки файла


Пример 1:


# Разбить файл на части размером 10 мегабайт

split -b 10M archive.tar.gz archive_split_part_


Результат:


archive_split_part_aa

archive_split_part_ab

archive_split_part_ac



Пример 2:


# Разбить файл на 5 частей

split -n 5 archive.tar.gz archive_split_part_


Результат:


archive_split_part_aa

archive_split_part_ab

archive_split_part_ac

archive_split_part_ad

archive_split_part_ae



Пример 3:


# Разбить файл на 5 частей с числовой нумерацией

split -n 5 -d archive.tar.gz archive_split_part_


Результат:


archive_split_part_00

archive_split_part_01

archive_split_part_02

archive_split_part_03

archive_split_part_04



Объединение файла из частей


Для объединения частей файла в один используется стандартная утилита cat. Общий синтаксис следующий:



cat файл_первого_куска файл_второго_куска файл_N_го_куска > итоговый_файл



Так как имена объединяемых файлов обычно имеют неизменяемый префикс и изменямый постфикс, можно указать сразу все склеиваемые файлы, например:



cat файл_* > итоговый_файл



В итоге получится единый исходный файл, который ранее был разбит на куски.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования