Как разбить файл на несколько частей (архивов)?

Posted by

Что делать, если нужно отправить файл объемный файл по почте, но есть одна загвоздка, почтовые администраторы обычно устанавливают лимит на размер вложения в одном письме. Обычно его не более 7Mb. Мы поступим по другому — сделаем архив и разобьем его по частям.

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

Исходная система:

keiz@ekz:/media/xlamino/test_arxiv$ grep -m 4 -e «model name» -e «MHz» -e «cache size» -e «bogomips» /proc/cpuinfo

model name : AMD Phenom(tm) 9850 Quad-Core Processor

cpu MHz : 2500.000

cache size : 512 KB

bogomips : 5023.01

keiz@ekz:/media/xlamino/test_arxiv$ uname -a && cat /etc/issue

Linux ekz 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:39:49 UTC 2012 x86_64 GNU/Linux

Ubuntu 10.10 \n \l

 
В процессе понадобятся следующие утилиты:7zip или :

ekzorchik@ekv:~$ aptitude search p7zip-full && aptitude show p7zip-full | grep -E ‘State|Version’

p p7zip-full — and 7za file archivers with high compression ratio

State: not installed

Version: 9.04~dfsg.1-1

ekzorchik@ekv:~$ aptitude search rar && aptitude show rar | grep -E ‘State|Version’

p rar — Archiver for .rar files

State: not installed

Version: 2:3.9.3-1

 

Устанавливаем пакеты p7zip-full и rar:

ekzorchik@ekv:~$ sudo aptitude install rar p7zip-full

 

Исходные видео файл:

Для примера представим, что у нас в тестовом каталоге test_arxiv какой-либо фильм в формате AVI, который будет весить 1,4 Gb и из которого в конечном итоге мы хотим получить архив того или иного формата (archive.*), разбитый

на части по 250 Mb.

keiz@ekz:/media/xlamino/test_arxiv$ dir -hl && file *

итого 1,4G

-rw-r--r-- 1 keiz keiz 1,4G 2012-06-30 09:52 Naprolom.2012.HDRip.avi

Naprolom.2012.HDRip.avi: RIFF (little-endian) data, AVI, 720 x 304, 23.98 fps, video: XviD, audio: Dolby AC3 (stereo, 48000 Hz)

 

Архивация с помощью 7zip:

keiz@ekz:/media/xlamino/test_arxiv$ 7z a -v250m archive_film.7z Naprolom.2012.HDRip.avi

7-Zip 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30

p7zip Version 9.04 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Scanning

Creating archive archive_film.7z

Compressing Naprolom.2012.HDRip.avi

Everything is Ok

-v — создание архива указанного размера, имеет синтаксис -v{size}[b,k,m,g]
250m — это 250 мегабайт, вместо m можно использовать b (байты), k (килобайты) или g (гигабайты).

a — добавить файлы в архив.


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

keiz@ekz:/media/xlamino/test_arxiv$ dir -hl archive_film.7z.00*

-rw-r—r— 1 keiz keiz 250M 2012-07-03 21:59 archive_film.7z.001

-rw-r—r— 1 keiz keiz 250M 2012-07-03 21:50 archive_film.7z.002

-rw-r—r— 1 keiz keiz 250M 2012-07-03 21:53 archive_film.7z.003

-rw-r—r— 1 keiz keiz 250M 2012-07-03 21:55 archive_film.7z.004

-rw-r—r— 1 keiz keiz 250M 2012-07-03 21:58 archive_film.7z.005

-rw-r—r— 1 keiz keiz 128M 2012-07-03 21:59 archive_film.7z.006

Для распаковки откройте первый архив (все архивы при этом должны находиться в одной папке).

 

Архивация с помощью rar:

keiz@ekz:/media/xlamino/test_arxiv$ rar a -v250m archive_naprolom Naprolom.2012.HDRip.avi

RAR 3.93 Copyright (c) 1993-2010 Alexander Roshal 15 Mar 2010

Shareware version Type RAR -? for help

Evaluation copy. Please register.

Creating archive archive_naprolom.rar

Adding Naprolom.2012.HDRip.avi

Calculating the control sum

Creating archive archive_naprolom.part2.rar

... Naprolom.2012.HDRip.avi

Calculating the control sum

Creating archive archive_naprolom.part3.rar

... Naprolom.2012.HDRip.avi

Calculating the control sum

Creating archive archive_naprolom.part4.rar

... Naprolom.2012.HDRip.avi

Calculating the control sum

Creating archive archive_naprolom.part5.rar

... Naprolom.2012.HDRip.avi

Calculating the control sum

Creating archive archive_naprolom.part6.rar

... Naprolom.2012.HDRip.avi OK

Calculating the control sum

Done

 

Архив поделенный на равные кусочки по 250 Mb:

keiz@ekz:/media/xlamino/test_arxiv$ dir -hl archive_naprolom.part*

-rw-r--r-- 1 keiz keiz 250M 2012-07-03 21:44 archive_naprolom.part1.rar

-rw-r--r-- 1 keiz keiz 250M 2012-07-03 21:48 archive_naprolom.part2.rar

-rw-r--r-- 1 keiz keiz 250M 2012-07-03 21:52 archive_naprolom.part3.rar

-rw-r--r-- 1 keiz keiz 250M 2012-07-03 21:57 archive_naprolom.part4.rar

-rw-r--r-- 1 keiz keiz 250M 2012-07-03 22:01 archive_naprolom.part5.rar

-rw-r--r-- 1 keiz keiz 135M 2012-07-03 22:03 archive_naprolom.part6.rar

В результате получаем несколько архивов вида: archive.part1.rar, archive.part2.rar, archive.part3.rar и так далее.

Для распаковки откройте первый архив.

 

Как видим утилиты 7z и rar имеют схожий функционал с одним не маловажным отличием, rar не полностью бесплатен для использования, об этом говорит строка при запуске — «Evaluation copy. Please register.»

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

 

Разбиение на части готового архива:
Более старомодный способ — разбить на части какой-нибудь tar.

Для примера возьмем тот же фильм, только на этот раз представим, что мы уже запаковали его в tar.gz (с помощью какого-нибудь менеджера архивов или того же терминала).

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

keiz@ekz:/media/xlamino/test_arxiv$ tar —version

tar (GNU tar) 1.23

keiz@ekz:/media/xlamino/test_arxiv$ tar cf Naprolom.2012.HDRip.avi1.tar Naprolom.2012.HDRip.avi

 

Разбиваем архив на части по 400 мегабайт:

keiz@ekz:/media/xlamino/test_arxiv$ —version

split (GNU coreutils) 8.5

keiz@ekz:/media/xlamino/test_arxiv$ split -a 1 -b 250m Naprolom.2012.HDRip.avi.tar Naprolom.2012.HDRip.avi.tar.

Точка в конце не случайно. В результате мы получим несколько архивов вида: film.tar.gz.a, film.tar.gz.b, film.tar.gz.c и так далее.

Склеиваем разбитые архивы обратно в единый:
keiz@ekz:/media/xlamino/test_arxiv$ cat Naprolom.2012.HDRip.avi.tar.* > Naprolom.2012.HDRip.avi.tar
Где Naprolom.2012.HDRip.avi.tar — имя склеенного архива, который получится в результате.

 

Сравнивая md5sum’у у полченных разными способами файлов видим, что восстановленный архив при склеивании получился идентичный:

keiz@ekz:/media/xlamino/test_arxiv$ md5sum Naprolom.2012.HDRip.avi1.tar

5d3f10e6d1f1fd04f38976c70ea9e867 Naprolom.2012.HDRip.avi1.tar

keiz@ekz:/media/xlamino/test_arxiv$ md5sum Naprolom.2012.HDRip.avi.tar

5d3f10e6d1f1fd04f38976c70ea9e867 Naprolom.2012.HDRip.avi.tar

Разнообразие способов которыми можно «дробить» файлы, вот отличительная черта операционной системы Ubuntu.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

10 − два =