Архиваторы в Linux
Немного информации о работе с архиваторами в системах Linux.
Al-Sher
Всем привет. Сегодня я хочу рассказать о архиваторах в системе Linux, а именно о tar и zip. Начнем сначала: Что такое архиваторы и для чего они нужны. Возьмем цитату из википедии:
Архиватор — это программа, осуществляющая упаковку одного и более файлов в архив или серию архивов для удобства переноса или хранения, а также распаковку архивов. Большинство современных архиваторов также реализуют сжатие упакованных в архив данных.
То есть архиватор призван собрать множество файлов в один архив, который намного удобнее переносить/хранить. Современные архиваторы так же поддерживают еще и сжатие данных, что позволяет сократить размер "выходного" файла-архива.
Tar
Tar является наиболее популярным решением в Linux системах. Сам по себе tar не способен сжимать файлы, но он может воспользоваться такими приложениями, как gzip или bzip2. Gzip и bzip2 не умеют сжимать несколько файлов, поэтому tar изначально собирает файлы в архив, после чего передает их данным приложениям для сжатия.
Создание архива Tar
Для создания архива tar, необходимо передать ему ключи
-cf
Ключ c говорит нашему tar о необходимости создать архив, а ключ f - что необходимо упаковать файлы. Пример создания архива:
tar -cf archive.tar ./files/
Данная команда создаст архив с именем archive.tar, вложив в него содержимое папки ./files. Так же можно передавать маску файлов, например такая команда:
tar -cf logs.tar ./log/*.log
Создаст архив logs.tar, в который попадут все файлы с расширением log из папки ./logВроде простые архивы создавать научились, давайте попробуем теперь использовать сжатие gzip:
tar -czf logs.tar.gz ./log/
Как можно было увидеть, появился новый ключ - z. Именно он и говорит нашему архиватору tar о необходимости воспользоваться Gzip для сжатия файла. Теперь же создадим сжатый файл, используя bzip2:
tar -cjf logs.tar.bz2 ./log/
Тут появился ключ j, который указывает на использование bzip2 для сжатия архива tar.
Распаковка архива Tar
Для распаковки архива Tar необходимо воспользоваться ключом x:
tar -xf logs.tar.gz
При распаковке уже можно не указывать, какой метод сжатия использовался.
Просмотр содержимого архива Tar
Еще одной замечательной возможностью tar является возможность посмотреть содержимое архива. Для этого применяется флаг t:
tar -tf logs.tar.gz
Так же есть возможность наблюдать процесс упаковки/распаковки архива, воспользовавшись ключом v:
tar -cvzf logs.tar.gz ./log/
Zip
Zip, в отличие от tar, уже содержит в себе методы сжатия данных. Zip очень популярен и по умолчанию установлен в множестве операционных системах.
Создание архива Zip
Так как Zip уже содержит в себе методы сжатия файлов, тут разнообразие команд меньше. Например, для создания архива необходимо выполнить следующую команду:
zip -r logs.zip ./log/
Распаковка архива Zip
Для того, чтобы распаковать архив zip, необходимо выполнить команду:
unzip logs.zip
Gzip
Как я уже писал выше, gzip позволяет сжимать файлы, но не способен работать с множеством различных файлов, поэтому его нельзя назвать архиватором. Но я всё же постараюсь немного рассказать о работе с ним. Для сжатия файла необходимо выполнить команду:
gzip logs.tar
В результате мы получим сжатый файл с названием logs.tar.gz. Стоит заметить, что исходный файл не остается. Чтобы воспользоваться разжатием, необходимо выполнить команду:
gunzip logs.tar.gz
В результате чего мы получим уже файл logs.tar.
Выше я уже писал о работе gzip совместно с tar. На мой взгляд, это наилучший способ работы с tar архивами, сжатыми с помощью gzip.
Bzip2
Bzip2, точно так же как и gzip, способен лишь сжимать файлы. Bzip2 сжимает файлы лучше, чем Gzip, однако процесс сжатия занимает больше времени. Для сжатия файла необходимо выполнить команду:
bzip2 logs.tar
А для разжатия:
bunzip2 logs.tar.bz2
Работа данных функций аналогична работе с Gzip.
Если команда не найдена
Вполне возможно, что одна из приведенных выше команд будет не найдена. Для исправления данной ситуации необходимо выполнить установку приложений. Для CentOS:
yum install tar gzip bzip2 zip
Для Ubuntu:
apt-get install tar gzip bzip2 zip
Так же не стоит забывать, что Tar не сможет сжимать файлы без установленных Gzip и Bzip2.
Devuan
Стоит ещё добавить, что zip под linux и Windows считает, что с национальными именами файлов не надо работать однообразно. Может быть, это пошло ещё со времён dos, но запаковав файлы в Linux, скорее всего, при распаковке под Windows получится абракадабрица вместо русских букв.