Средства архивации и компрессии

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

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

Основным инструментом архивации в Linux является команда tar. Изначально она предназначалась для создания архивов на магнитной ленте, откуда и название ( tar — от Tape ARchive ), однако ныне используется просто для объединения нескольких файлов или каталогов в один архивный файл (*.tar ) с сохранением путей, прав доступа и принадлежности. Она же позволяет развернуть архив в группу файлов или каталогов.

Формат команды tar следующий: tar fo file1 file2... file99

/adabas /autosavc

 

ЕЯ

К 1 V11,1

ссылка j. ссыпке

псыпки

l/i pyillNl

эасииренны

 

■ качалша

1ТЭЛО! л

 

/c»f I ic:«S?

:nof f i celjU

Hint: [>o you want I .i k'.:|(tf ii I host ;!■■; 1llffBBIIH2flgRl3

0'-4.[gN----

Иия

/--/tluts

/letter

/« IlivaГ"

/ri s insta 11

adnrrin.txt

nin. l> t--fragments.txt

ins I-ill . L\l

r2.txt CxI^.eIek

Размер Бремя правки

409G Иил 4 13:51

4096 Июн 27 12:30

4096 Нин 24 07:Э5

4096 !Лон ^fi П : Н?

4096 Ивн 24 09:48

409Й Июл 5 07:34

32ЭДП Ивн 20 19:18

"32470 Инн 24 10:53

13284 Ивл 1 OS:12

79376 Инн 24 16:51

с|ч1яг1Лх1 qstart.txt"'

the Configuration dialog

■l■■ Ш ъУМHI bitffl ЯВ7;п1и ВВЯгДД! i -.у ■■: И юШВ

Рис. 8.11: Меню Файл — основные файловые операции

где f — параметр, определяющий выполняемую функцию, o - опции этой функции, file* — имена файлов для архивирования или архивов для развертывания. Для параметров и опций используется два вида нотации — сокращенная (однобуквенная) и полная. Особенностью синтаксиса tar является то, что при сокращенной нотации знак дефиса перед параметром и опциями не обязателен (хотя и допустима конструкция tar -fo file), а сами они пробелами не разделяются. При полной нотации перед параметром и опцией ставится двойной дефис и разделяющий ихпробел:

tar --function --option file

Некоторые параметры можно задать только в полной нотации. В частности, получить справку по tar можно только командой

-help

tar h или tar -h

В соответствии с назначением программы, в tar имеется два главныхпараметра—c (или --create) для создания нового архива, и x (или --extract) —

Рис. 8.12: Установление прав доступа

для развертывания существующего. Кроме того, над архивами возможны следующие действия:

•t (--list) — вывод списка файлов архива;

•d (--dif f) — сравнение архива с каталогом для поиска различий;

•r (--append) — присоединение файлов к концу архива;

•u (--update) — обновление архива, то есть присоединение отсутствующихв нем файлов и замена имеющихся их более новыми версиями (если они имеются);

•A (--catenate) — присоединение одного tar-архива к другому;

•--delete — удаление файлов из архива.

Каждый параметр может иметь более чем одну опцию. Однако последней принято ставить опцию f или --file (для некоторыхверсий tar это является обязательным требованием), за которой следуют аргументы — имя файла создаваемого архива, а потом имена файлов для архивирования. Если опция f не указана, программа пытается создать архив (или считать его) на устройстве по умолчанию — стримере /dev/rmt0, а поскольку такового в системе, скорее всего, нет, последует сообщение об ошибке.

Рис. 8.13: Определение принадлежности файлов

В промежутке между параметром (например,силих) и опцией f могут быть использованы дополнительные опции, такие как:

•v — вывод имен архивируемых/разархивируемых файлов; двойная опцияwвыводит полную информацию о файлах;

•W — верификация архива;

•k — запрет на переписывание существующихфайлов при разархивации;

•другие. Из нихважны опции z и j , предписывающие сжимать архивируемые файлы с помощью программ компрессии gzip и bzip2 соответственно. Или, напротив, распаковывать сжатые tar-архивы при разархивации (или при просмотре архива), о чем будет сказано ниже.

С помощью tar можно архивировать не только отдельные файлы, но и целые каталоги, в том числе с подкаталогами любого уровня вложенности. Так, командой

tar cvf alldata.tar ~/alldata

каталог alldata в домашнем каталоге пользователя будет целиком упакован в архив alldata.tar, который будет помещен в текущий каталог. Если просмотреть его потом командой

азмер И|?емя правки I

Я Ищи 1(1 [5:54 /..ггЬД)Лир 7 03:17 /addbas 64188 Лгтр £ 00:10 /autBsavc Ji40J ЛипS1?:30

Размер Бремя правки 4006 №11ТО14:181096rton 12L!:Zi 4096Нин19 23:17

1ИУЬ | /ил 1

мпяин i fjyuiN! ЯРУiмг.хтнип

[flwx]Irwx][r-kj[alv

Флаг === = =________

РеИИМ 1077Ь

ipynnn

lalv ]

[<млнежргеъ >|f}«|NHriiK |

4 09:5Ci ?|?:?344>yfj Irtm 1 U9:2U

lo use the mouse cut and paste may require holding the shift keylocal hostMnTI^^^^ ^^^^ ^^^^^ ^^^^^

"? ^SI И ЛЙ IHBiTTffl E ьТЯВ Й1 bitffl ЯВ7;п1и ВВЯгДД! i ■ -.у- И юТРЯ

□ l«ri.lg-^.H .*-J

Рис. 8.14: Установка прав доступа в символьной форме

tar tf alldata.tar

можно видеть, что путь каждого файла будет включать в качестве первого элемента домашний каталог пользователя:

home/username/alldata home/username/alldata/datal home/username/alldata/datal/filel

и т.д. Та же команда в форме

tar cvf alldata.tar alldata

(в предположении, что текущим является домашний каталог пользователя) приведет к сохранению в архиве путей вида

alldata alldata/datal alldata/datal/filel

Наконец, если архивировать тот же каталог командой

П.~*..|У!-------.

Рис. 8.15: Главное меню: пункт Команды

tar cvf alldata.tar alldata/* пути файлов в архиве примут вид

alldata/datal alldata/datal/filel

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

tar cvf alldata.tar alldata

В этом случае при его разархивации в произвольном месте файловой системы целиком командой

tar xvf alldata.tar

просто создается новый каталог ~/alldata, куда и помещаются все распакованные файлы. Это предотвращает ихсмешение с существующими файлами и уничтожение последнихпри случайном совпадении имен.

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

Рис. 8.16: Вывод дерева корневого каталога

tar xvf alldata.tar alldata/data1/file1

Пути эти можно предварительно узнать с помощью команды

tar tvf alldata.tar

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

Программа gzip — это именно и только чистый компрессор, применимый лишь к единичному файлу. При этом (внимание!) исходный несжатый файл подменяется его сжатой копией, которой автоматически присваивается расширение *.gz .

Формат команды: gzip file

в результате чего образуется файл file.gz , а исх одный file исчезает. Обратная процедура выполняется командой

П.~*..|У!-------.

Рис. 8.17: Поиск файла

gunzip file.gz

что влечет за собой замену файла file.gz файлом file. Распаковку сжатого файла можно выполнить и командой gzip, для чего она дается в следующей форме

gzip -d file.gz

или

gzip --decompress file.gz

Команда gzip имеет и другие опции, указываемые в краткой (однобуквенной) или полной нотации. В отличие от tar, знак дефиса (или, соответственно, двойного дефиса) обязателен в обоихслучаях.

Так, опциями -1 ... -9 можно задать степень сжатия и, соответственно, время процедуры: -1 соответствует минимальному, но быстрому сжатию, -9 — максимальному, но медленному. По умолчанию в команде gzip используется опция -6, обеспечивающая компромисс между скоростью и степенью сжатия.

Как уже говорилось, команда gzip (как и gunzip) применима только к единичному файлу. Однако есть возможность с помощью одной команды сжать

Левая панель_____*айл_____Команда_____ НастройкиПравая панель

/ufliceS?

:nof f i ceBU

в речи правки

Ищи 30 19:33

Ивн 12 12:25

Инн 13 23:17

Ие»| 1 03:34

Кпм Ш 22:41

Инн И 13: И

Июл 5 09:4В

/qcoportal /{mix

/sofutsrra

ПГАП.МГlinbookl.sxw

1 int]<>t]kl. Ixl linbook.htrnl 1 inhotjkkoi. Ixl probe.txt

4096 Нин 12 12:23 40У6 Июл 109:20

Размер Время правки 409fi Пил S 21 :34

7821181 H»H1314:57

lfifi31K /:■:. I 13 14:Sfi

2968S78№л5 1B36

103 ЛолИ 13:54

439У70Июл4 11:52

8й!!650 Июл 4 11:57

4375S71Июл4 12:05

815491)№ui4 12:03

120Июи 10IB:00

vou can work or the fi les found using the I'anelize button. urll I ^^^ ^^^ ^^^^ ^^^^

1Шb^ffl ffi б1В5 ДВ7;гсл ИВЯгЛЗН -..у-.: И ю^Я

Рис. 8.18: Размеры каталогов: в правой панели — суммарный объем файлов, в левой — объем, занимаемый файлом каталога.

(или распаковать) сразу несколько файлов. Это делается двояко. Либо в качестве аргументов команды просто перечисляются подлежащие сжатию файлы

gzip file1 file2 ... file99

результатом чего будет появление в текущем каталоге файлов file1.gz , file2.gz и т.д.

Либо, если сжимаемые файлы, расположены в одном каталоге, можно использовать опцию рекурсии -r . Так, если требуется упаковать все файлы в каталоге dir , содержащем файлы file1 и file2 и подкаталог subdir с файлами file3 и file4, команда дается в следующей форме:

gzip -r dir

после чего просмотр командой

ls dir/*

выдаст следующий результат:

Рис. 8.19: Общие настройки MC

dir/filel.gz dir/file2.gz dir/subdir: file3.gz file4.gz

С помощью команд

gunzip -r dir

или

gzip -dr dir

сжатые файлы в каталоге dir будут распакованы.

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

tar cvzf dir.tar.gz dir/

Обратите внимание, что расширение *.gz в этом случае нужно указывать в явном виде, автоматически оно к имени архива не присоединяется, и компрессированный архив будет иметь вид dir.tar. Поскольку в Linux расширения

Левая панель______оУайл______Команда_____НастройкиПравая панель

азмер Bpewi правки|по * Ищи 30 19:38 /. .... ИвнU12:21.4096 Ищи 13 23:17

 

(*) ертикальное ( ) []|x/:«]iiiiMiiiiKM^

Iх аеные размеры 045Г ] = [ 3045

 

[к] инейка меню [тс" innw-c: I Ei г у [: - ] омандная строка [|] М Тки КЛАВИШ\\ Срока подсказки [ ] Подсклздл R Г^ггп

 
     
 

С ) Иракаиступа [к] Типн айдов

 
 

[< альлс >] [ охранить ] [ рсроать ]

 

Размер Время правки

4ГОЙ Иил 5?\ ?А

*1МУЬ и»л 5 20:"

4096 Инк 13 14:57

96 йен 13 14:56

ТО №л 5 16:36

03 ПилЛ13:Я

70 Пил 4 11:5!ЧПИюл 4 11 :57

71 Пил 4 12:01 "О Иин1 4 17:03

" i 10 16:00

| щН1ДД1ТВВ1 И i^Tffl И1б1ЙВ!ЯТ!Д7ШЯ1ЯВ1гДЯЯ1ВВяДЯ!ИЯюТИЯ

Рис. 8.20: Настройка внешнего вида MC

имен файлов не играют той роли, что в MS DOS (о чем подробнее сказано в руководстве администратора), это не помешает распаковке такого файла командой

tar xvzf dir.tar

Следует, однако, помнить, что архив сжатых файлов не может быть обновлен командой tar с параметрами r или u .

Другой способ — создание архивного файла командой вида

tar cvf dir.tar dir/

а затем его сжатие как единого целого командой

gzip dir.tar

В результате образуется такой же файл dir.tar.gz . Однако в принципе архив сжатых файлов и сжатый архивный файл — это разные вещи. Очевидно, что сжатый архивный файл не может быть ни пополнен, ни обновлен средствами tar .

П.~*..|И-------1

Рис. 8.21: Настройка подтверждений

Однако такая процедура возможна с помощью иныхархиваторов (например, ark), поэтому такой формат препочтительнее архива сжатых файлов.

Компрессированные архивы, созданные сочетанием программ tar и gzip — общепринятый в LINUX-системахметод распространения файлов. В итоге почти все программы для Linux, которые можно обнаружить в Интернете, имеют формат *.tar.gz, а некоторые — исключительно в нем. Часто для совместимости с ОС, не допускающими двухточек в имени файла, компрессированным tar-архивам на ftp-серверах присваивается расширение *.tgz.

В коллекцияхпрограмм на ftp-серверах не следует путать простые архивы *.tgz (то есть просто переименованные файлы tar.gz) с бинарными пакетами того же вида, используемыми во многихдистрибутивахLinux (например, в Slackware) или в FreeBSD и OpenBSD. Последние также представляют собой упакованные tar-архивы, но включают, помимо откомпилированных собственно программныхфайлов, также дополнительные инсталляционные сценарии, ориентированные на конкретные дистрибутивы или ОС. Попытка напрямую установить ихвASPLinux, скорее всего, закончится неудачей.

Однако gzip — не единственная программа компрессии для Linux. В последнее время широкое распространение получил компрессор bzip2, обеспечивающий большую (на 10-15%) степень сжатия, хотя и менее быстродействующий.

Использование его практически идентично gzip, с деталями его можно озна-

Рис. 8.22: Настройка ввода/вывода нелатинскихсимволов

комиться с помощью man bzip2 или info bzip2. Итоговый компрессированный файл получает имя вида *.bz2 и может быть распакован командой bunzip2.

Следует только помнить, что форматы *.gz и *.bz2 несовместимы между собой: первый не может быть распакован программой bunzip2, а второй — программой gunzip .

Тем не менее, существуют программы, способные одновременно работать с архивами форматов tar.gz и tar.bz2. К ним принадлежитArk, входящий в составKDEи имеющий, к тому же, удобный графический интерфейс.

ПрограммаArkпредставляет собой оболочку, интегрирующую в себе различные архиваторы и компрессоры командной строки. Она вызывается из стартового меню («Утилиты»- «Архиватор») или набором одноименной команды в окне терминала или строке минитерминала. После этого открывается пустое окно программы со строкой меню и панелью инструментов вверху и статусной строкой внизу (рис. 8.25).

Сразу после запуска доступно два действия — создание нового архива или открытие существующего. Первое выполняется кнопкой в панели инструментов или через меню«Файл»Новый. После этого предлагается дать имя архивному файлу. Формат архива распознается автоматически по расширению, поэтому оно должно быть задано в явном виде.

П.~*..|И-------1

Рис. 8.23: Установка кодировок для имен файлов, передаваемыхнациональными наборами символов

Список поддерживаемыхформатов можно посмотреть, открыв выпадающее меню поля«Фильтр»в панели выбора файлов (рис. 8.26). Он включает все традиционные для LINUX-систем форматы архивов, в том числе и компрессированных— tar, tar.gz, tar.bz2, tar.Z, компрессоры gzip и bzip2, а также некоторые форматы архиваторов/компрессоров MS DOS/Windows — ZIP, LHA и даже RAR.

ПосколькуArk— не более чем оболочка для программ-архиваторов и компрессоров, для работы со всеми теоретически доступными пакетами должны быть установлены соответствующие пакеты, то есть Linux-версии zip и unzip, rar и unrar и т.д. Большая ихчасть входит в состав дистрибутиваASPLinux, хотя некоторые придется доустанавливать из сторонних источников. Так, в дистрибутиве имеется пакет unrar для распаковки RAR-архивов, но парной утилиты гаг для ихсоздания не имеется.

Как уже говорилось, формат создаваемого архива определяется расширением его имени. Соответственно, если в поле выбора задать archive.tar, archive.tar.gz, archive.tar.bz2 или archive.zip, выбранные позднее файлы будут упакованы соответствующим образом.

После задания имени становятся доступными добавление файла или каталога через меню(«Действие»- «Добавить файл»или«Добавить каталог»)или одноименными кнопками на панели инструментов. Это автоматически вызыва-

Рис. 8.24: Распознавание клавиш

ет начало процесса архивации и (или) компрессии. Никакой индикации процесса, правда, не выводится, лишь по завершении в окне программы появляется список входящих в архив файлов (рис. 8.27).

Такой же список выводится в окне и в том случае, если вместо создания нового архивного файла был открыт уже существующий. После этого активизируются пункты в меню«Правка»и«Действия». С помощью первого меню (рис. 8.28) можно выбрать один или несколько файлов (введя ихимена вручную), выбрать все файлы, снять или обратить выделение, а также просмотреть вывод архиватора (рис. 8.29).

Над выбранными файлами через меню«Действия»становятся доступны

Рис. 8.25: АрхиваторArkпосле запуска

 

ПИ1.1

   
       
 

±ЛГ\Прьил Длг-шия ЦйрреА™ Привщ,

(

   

* •*■ v (Й йг ч ?у| *»■■«■"«"*

______:

 

_

..^ Г}РП| ГГф l*ij Clfilfll r^nnlRE

^adroai r^ooct P^nimal *l)j.ei*hv» в]***1 Bjnpflnnflnflfin

^■: г5|Г.Ч в± QnrhF,!

IjIPYip

«мин 1 ynrAD.Iff

 

•Utfaf»

------------------------'

     
 

. „к

       

ШШi<~'"l'

ЬифлАг^*

м,-/,-..

   
     

Jlpiiln ТДЙ r.LUr ".lij.fl!.. ".l*j.Jr M*jnii № r^nj СзфГЬИ фяйны f gt "bt • bjl • Ma■ Z)

Ар«*м3ip г i1 ?- ■ *rt

-| ■■::. № Г f.|

-1 -.:=- ""■"■.. :■-.. ■■■■■-:. ЧЛК ' ■:■■'... .... . .-.

ш

г

Рис. 8.26: Создание архива вArk

Дом* ГЬМкй juMitnuMM И1С1гяйга ГКнЛ»

   

&fi|l&%[lS:u

=4

 

1'мЧ IpJtil.lJt | RS

xv/n» \fina/i^np.tTri/nna |

Faiwpp | RriPUfl

1

1ГЁМШ~1Г|«Уё

S еЩ n>xxfrtUt 5 n sfll *j, til/. Vt

Ц||Цгг*Нл^р«н^дп1Л»_р1»у1а

-■■-!,......<■ ■ ,\-;

iji ii 1

HI ii i

uiiuui-u^-uai&iaE.fli сгмп.в*.гв>*яв*и

4910 £№-«-» 12*EU9

lhauorti-fft-Jii linn en

RFsriKjnni-nT-nR |е.ЫПЗ ММЯЙП-C^Ol £l:£ia

ввнгмт.м.гвглисии smi«jHi'4(-»i»$t4i

   

jjj

1 Pi»

 
         

*3U*M НП FlblOpAMM

HWQ

ie>pifljuo«,)jon.n4

Рис. 8.27: Список файлов архива после его создания или открытия

следующие операции (рис. 8.30):«Удалить», «Распаковать», «Вид», «Открыть», «Редактировать».

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

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

Для конфигурированияArkпредназначено меню«Настройки»(рис. 8.31). Здесь можно включить/выключить показ панели инструментов и строки состояния, скорректировать состав панели (в дополнение к имеющимся по умолчанию кнопкам добавить любые другие, соответствующие действиям из пунктов главного меню), определить горячие клавиши.

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

Рис. 8.28: Главное менюArk, пункт«Правка»

Рис. 8.29: Меню«Правка», просмотр вывода архиватора

созданные архивы и т.д. (рис. 8.32).

Иными словами, программаArkупрощает создание архивов, дополняя стандартные утилиты такими возможностями, как интерактивное пополнение и обновление каталогов, удаление из нихненужныхфайлов и т.д. Однако она не предоставляет возможности ряда тонкихнастроек, например, вариаций степени/скорости сжатия, и потому не заменяет утилит командной строки для архивации и компрессии.

Еще материалы по теме: