23 апреля, 2024

Основы Linux.Часть 27 (архивирование и сжатие файлов)

Содержание:

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

Как пользователям Linux, нам нужно знать, как распаковывать .tar файлы и извлекать их содержимое. И наоборот, нам нужно знать, как сжимать и объединять файлы в .tar архив, когда необходимо переслать их кому-нибудь.

Те из вас, кто пришел из мира Windows (а это большинство), вероятно знакомы с форматом .zip. Утилита .zip, встроенная в Windows, позволяет объединить несколько файлов в одну папку, а затем сжимает эту папку, уменьшая ее размер. Это делает передачу такого файла через Интернет или запись на съемный диск быстрее. Процесс, который мы рассмотрим в этой статье, эквивалентен процессу сжатия файлов при помощи zip в мире Windows.

Что такое сжатие

Сжатие — это очень интересная тема, которую мы изучим в другой статье чуть позже. Существует как минимум две категории сжатия: с потерями (lossy) и без потерь (lossless).

Сжатие с потерями лишает информацию неизменности. Другими словами, сжатый, а затем распакованный файл не то же самое, что и оригинальный. Это отлично работает для графических, видео- и аудио- файлов, где небольшая разница в данных файла почти не видна (.mp3 и .jpg — это как раз те алгоритмы, которые используют сжатие с потерями).

При пересылке файлов или программного обеспечения сжатие с потерями неприемлемо. Распакованный после сжатия файл должен быть идентичен файлу-оригиналу. Для этого подходит другой тип сжатия, который мы здесь уже упоминали — сжатие без потерь, и он применяется в нескольких различных утилитах и алгоритмах.

(Более подробно об этом в следующих статьях).

Шаг 1. Объединение файлов в один .tar файл

В большинстве случаев при архивировании или объединении файлов в Linux/Unix используется команда tar. Tar — это сокращение от слова tape archive, что означает «ленточный архив». Это отсылка к доисторической эре вычислительной техники, когда системы того времени использовали для хранения данных магнитные ленты. Tar используется для того, чтобы создать один файл из большого количества файлов. Эти файлы часто называют архивами, tar-файлами или тарболами (tarball).

Читать также:  Какими умениями должен обладать профессиональный хакер?

К примеру, у нас есть три файла: nullbyte1, nullbyte2 и nullbyte3. Мы можем увидеть их, когда выполним в консоли следующую команду (у вас могут быть другие файлы):

kali> ls -l

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

kali> tar -cvf NB.tar nullbyte1 nullbyte2 nullbyte3

Давайте разберем эту команду по элементам, чтобы лучше понять, что она делает:

  • tar — команда архивирования
  • -c — означает создание
  • -v — означает подробный вывод о процессе архивации (опциональный параметр)
  • -f — записать или считать из файла, следующего за этой командой
  • NB.tar — это новое имя файла, которое мы хотим создать

Эта команда возьмет все три файла и создаст один файл с именем NB.tar, как показано на скриншоте ниже. Давайте опять выведем на экран содержимое нашей текущей папки (ls -l)

Обратите внимание на размер архива (тарбола). Когда эти три файла архивировались, tar несколько перестарался. Сумма трех файлов перед архивированием составляла всего 72 байта. После архивирования tarball вырос до 10 240 байт. Процесс архивирования добавил более 10000 байт. Хотя этот дополнительный объем информации и может быть значительным при работе с мелкими файлами, но эта разница становится все менее различимой при работе с большими файлами и группами больших файлов.

Теперь мы можем просмотреть содержимое tar-архива и вывести на экран упакованные файлы. Это делается при помощи команды tar с ключом -t, как показано на скриншоте ниже.

kali> -tvf NB.tar

Затем мы можем извлечь эти файлы из tarball’а, используя команду tar с ключом -x, как показано на скриншоте выше.

kali> tar -xvf NB.tar

Наконец, если мы хотим извлечь файлы и сделать это «молча», мы можем убрать ключ -v, и tar распаковывает файлы, не отображая для нас никакой информации:

kali> tar -xf NB.tar

Шаг 2. Сжатие файлов

Команда tar может принимать на вход много файлов и превращать их в один архивный файл, но что делать, если вы хотите сжать эти файлы? Для этого у нас в Linux есть три команды, способные создавать сжатые файлы:

  • gzip (.tar.gz или .tgz)
  • bzip2 (tar.bz2)
  • compress (.tar.Z)
Читать также:  Сравнение лучших антивирусных приложений для Android

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

Использование Gzip

Сначала попробуем gzip (GNU zip), так как это самая распространенная утилита сжатия в Linux. Мы можем сжать наш файл NB.tar, набрав:

kali> gzip NB.*

Обратите внимание, что мы использовали здесь звездочку (*) для указания на расширение файла, это означает, что команда gzip должна применяться к любому файлу, который начинается с «NB» с любым расширением файла. Мы будем использовать аналогичные обозначения в последующих примерах. Если мы выполним команду ls -l (длинный список), то увидим, что gzip изменил расширение файла на .tar.gz, а размер файла уменьшился до 231 байт!

Затем мы можем распаковать этот же файл, используя команду gunzip (GNU unzip).

kali> gunzip NB.*

Когда мы это сделаем, то увидим, что файла с расширением .tar.gz в папке больше нет, и файл вернулся к своему исходному размеру в 10 240 байт.

Использование Bzip2

Еще одной из наиболее используемых утилит сжатия в Linux является bzip2. Он работает аналогично gzip, но у нее лучше коэффициенты сжатия. Мы можем сжать наш файл NB.tar, выполнив в консоли команду:

kali> bzip2 NB.*

Как видно на скриншоте выше, bzip2 сжал файл до 222 байт! Также обратите внимание, что теперь расширение файла стало .tar.bz2.

Чтобы распаковать сжатый файл, воспользуйтесь командой bunzip2 (b unzip 2).

kali> bunzip2 NB.*

Когда мы это сделаем, файл вернется к своему исходному размеру, и расширение файла снова вернется в .tar.

Использование Compress

Наконец, для сжатия файлов мы можем использовать команду compress. Это наименее часто используемая утилита сжатия, но зато ее легко запомнить.

kali> compress NB.*

Обратите внимание на скриншот выше. Утилита compress уменьшила размер файла до 395 байт, что почти в два раза превышает размер файла, выданного bzip2. Также обратите внимание, что расширение файла теперь стало .tar.Z (с прописной Z).

Читать также:  Дроп: Способы пересылки #Часть 1

Чтобы распаковать этот файл, воспользуйтесь командой uncompress или командой gunzip.

kali> uncompress NB.*

Шаг 3. Распаковка Vmware Tools

Теперь, когда у нас есть базовое представление о работе с этими инструментами, давайте использовать их на реальном примере. Многие, включая нас, используют в качестве системы виртуализации Vmware Workstation. Она позволяет запускать множество операционных систем на одной физической машине. И на этом поприще у VMWare почти нет конкурентов.

Если вы используете Vmware Workstation, то вы, вероятно, знаете, что Vmware рекомендует вам скачать и установить набор своих утилит Vmware Tools. Если вы установите Vmware Tools, то ваша гостевая операционная система интегрируется в вашу рабочую операционную систему намного лучше. Это включает в себя лучшую графическую производительность, возможность использования функций Drag-and-Drop, общие папки, лучшую производительность мыши и некоторые другие вещи.

Теперь, когда вы скачали Vmware Tools, вы увидите, что это tarball, сжатый с помощью gzip. Мы определяем это по расширению файла — .tar.gz. Для того, чтобы распаковать этот архив и получить все содержащиеся в нем файлы мы можем воспользоваться следующей командой:

kali > tar -xvzf VmwareTools-.9.6.2-1688356.tar.gz

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

  • tar — команда архивирования
  • -x означает извлечение файлов
  • -v означает подробный вывод о результатах разархивации
  • -z используется для декомпрессии
  • -f направляет команду на файл, который за ней следует

Когда мы нажимаем Enter, сжатый tarball распаковывается и файлы извлекаются. Из архива Vmware в результате работы этой команды будет извлечено сотни файлов. Теперь нам остается только запустить скрипт для установки утилит, входящих в пакет Vmware Tools.

Архивирование и сжатие — это ключевые навыки работы в Linux, которые любой хакер или системный администратор должен знать и использовать в своей работе. Мы продолжаем изучение основ Linux, поэтому обязательно возвращайтесь!

Предыдущие статьи ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 23 , 25 , 26).

Добавить комментарий