Урок седьмой, который называется архивирование и сжатие файлов.
В любой операционной системе, будь то Windows, MacOS, Solaris или *Nix системы присутствуют файлы, эти файлы бывают разными, текстовыми, графическими, звуковыми и обязательно файл имеет какой то объем, который измеряется байтами, килобайтами и т.д. Хорошо когда эти файлы относительно небольшого размера и ваш жесткий диск не маленького объема. Но когда ситуация меняется и места на носителях становится не хватать, вот тут то абсолютно все пользователи задаются вопросом – а как же сделать так чтобы хоть чуть - чуть уменьшить размеры файлов и тем самым увеличить свободное место на вашем ”харде”.
Такой прелюдией мы подошли к проблеме уменьшения размеров файлов. Эта процедура называется сжатием, и скажу вам она очень широко используется в среде Linux.
Для такой процедуры в Linux есть целый арсенал команд и приемов.
Начнем с простого примера.
Создадим текстовый файл с именем test.txt
Вводим в консоли команду touch test.txt
Откроем наш файл test.txt
Набираем в нем любой текст и копируем его в этом документе раз 20-30 чтобы наш текстовый файл увеличился в размере. Сохраняем изменения.
В консоли пишем команду ls –lh и смотрим на объем созданного нами файла. В нашем случае он составляет 20 байт, для удобства восприятия мы ввели в команде опцию h – что позволило нам увидеть размер файла удобного для чтения.
Если бы файл был размером 20 мегабайт, то не введи мы букву h в команде то результат был бы в байтах, что не особо удобно для восприятия человеку.
В общем наш файл имеет какой то объем и мы хотим этот объем уменьшить.
В системе Linux существует несколько программ для сжатия – zip, gip, bzip2.
Рассмотрим с вами работу программы zip.
Вводим в консоли команду
zip test.zip test.txt
контролируем выполнение и проверяем размер файла
ls –lh
файл сжался и теперь занимает 2 байта.
Иногда, например для пересылки файлов по электронной почте необходимо переслать не один а несколько документов. Но пересылать каждый файл, пусть даже сжатый не будет правильным решением проблемы. Для нормальной отправки файлов необходимо собрать все файлы вместе, для этого необходимо сделать из файлов архив.
На заметку – архивация отличается от сжатия тем что файлы находящиеся в архиве не уменьшаются в размере, а только собираются вместе.
Так вот для отправки файлов почтой мы сделаем файловый архив.
Для его создания используется та же программа zip.
Если быть точным то команда zip выполняет и архивацию и сжатие.
У программы zip есть еще одно свойство – для нее можно задать степень сжатия, команда задается следующим образом
zip –[0-9] test.zip test.txt меняя цифры с 0 до 9 можно менять степень сжатия. 0 – сжатие отсутствует а с цифрой 9 максимальное сжатие.
На скриншоте видно как различаются степени сжатия.
Но если мы смогли заархивировать и сжать файл, то по всем законам логики должны сделать обратную операцию – разархивацию или извлечение архива.
Введем в консоли команду unzip test.zip и после её выполнения мы получим файлы вне архива и “расжатые”.
Бывают такие случаи когда при разархивации происходят ошибки, и нельзя открыть этот архив. Для того чтобы избежать таких ситуаций в Linux есть средство для проверки целостности архивов.
В таком случае команда будет выглядеть следующим образом
unzip –t test.zip
если ошибок нет то все нормально.
Для использования программ gzip и bzip2 команды будут такими
gzip test.txt и bzip2 test.txt – легко заметить что при использовании команды zip – нам необходимо указывать вид файла который у нас получится, а при использовании gzip и bzip2 мы указываем только имя файла который надо преобразовать.
Для них также присутствует опция степени сжатия от 0 до 9.
Для разархивации команды следующие gunzip и bunzip2 соответственно.
Но несмотря на сходство этих команд все же есть отличие zip от других двоих gunzip и bunzip2. Они при создании архива удаляют оригинал, и чтобы такого не произошло, необходимо перенаправить созданный архив в другую папку
gunzip –c test.txt.gz >test.txt
После этого у нас будет 2 файла – оригинал и сжатый архив.
Если же нам необходимо просто собрать несколько файлов вместе без сжатия, то нам необходимо применять команду
tar –cf test.txt
ключи c и f означают create и file (создать файл).
Ну и напоследок…
Все команды zip, gzip,bzip2 и tar можно использовать совместно друг с другом.
Помимо этого командой tar можно производить помимо архивации и сжатие.
Пример всего этого ниже:
tar –zcvf test.txt
опция z – означает что необходимо к архиву применить программу gzip, а v – verbose позволит контролировать процесс работы команды.