Полезная информация по работе с архивами в Linux.
Рассмотрим на примерах работу архиваторов, таких как tar, zip, gzip и bzip2.
Немного теории. Что такое архив? Что такое метаданные?
Архив — файл, содержащий в себе информацию из одного или нескольких, иногда сжатых (без потерь), других файлов. Является результатом работы программы-архиватора.
Архив почти всегда содержит метаданные. Например:
* Имена файлов (кроме некоторых программ сжатия одиночных файлов — например, gzip, где в качестве имени файла используется имя архива без расширения, добавленного такой программой)
* Идентификаторы владельцев, групп, и т. п. файлов, и их прав
* Размеры файлов
* Даты изменения, создания файлов
* Контрольные суммы файлов для проверки правильности распаковки
* Размер и контрольные суммы архива
* Избыточные данные для восстановления данных при повреждении
* Цифровая подпись создателя архива
А теперь практика.
tarИсторически один из самых старый архиваторов в Linux. Как архиватора его роль сводится к объединению файлов в один архив, без компрессии(сжимания). При совместном использование с другим архиватором можно добиться хорошей компрессии файлов и каталогов.
Создание архива и распаковка tar:
tar -cf archive.tar folder/
Создает архив archive.tar, содержащий директорию folder/.
tar -xf archive.tar
Извлекает содержимое архива archive.tar в текущую директорию,
tar -zxf archive.tar.gz
Извлекает содержимое архива, сжатого gzip. Используйте -j вместо -z для архива bzip2.
tar -vxf archive.tar
Извлекает содержимое архива с детальным выводом процесса извлечения данных.
zipzip может одновременно и архивировать, и сжимать файлы; то есть вы можете сжать различные файлы, поместив их при этом в архив. Он известен еще с 1998 года и метод его работы был реализован на многих платформах, следовательно, это один из самых мобильных вариантов (особенно – если вам необходим доступ к вашему архиву из системы Windows).
Работа с zip:
zip -r archive folder
Создает архив archive.zip с содержимым каталога folder.
unzip archive.zip
Извлекает содержимое архива archive.zip в текущую директорию, создавая вложенные директории (используйте -j чтоб не создавать вложенных директорий).
gzipgzip может сжимать файлы, но не архивировать. Однако он прекрасно работает, если его использовать вместе с архивирующим инструментом – как бывает на практике, gzip и tar отлично работают вместе.
Архивирование gzip:
gzip file.tar
Сжимает файл file.tar и создает file.tar.gz.
tar czf file.tar.gz folder/
Архивирует и сжимает folder/ в файл file.tar.gz.
gunzip file.tar.gz
или
gzip -d file.tar.gz
Распаковывает file.tar.gz
tar zxf file.tar.gz
Распаковывает архив file.tar.gz и извлекает из него файлы.
tar -zxvpf archive.tar.gz
Извлекает с сохранением прав доступа и принадлежности оригинальных файлов (Здесь использованы опции: ``z'' (сжать резервную копию программой ``gzip''), ``c'' (создать архивный файл), ``v'' (отображать список файлов при архивации), ``p'' (сохранить в архиве права доступа к файлам: при восстановлении они будут тоже восстановлены). Опция ``f'' (file) указывает, что следующий параметр задает имя файла или устройства для записи. Обратите внимание на то, что имя архива будет содержать дату его создания, поскольку в имя файла включена команда ``date''. Общее соглашение об именах состоит в том, чтобы к имени архива добавлять ``tar'', а к имени сжатого архива добавлять `` tar.gz'').
bzip2bzip2, как и gzip, сжимает, но не архивирует. И, опять-таки, он отлично работает с tar, если вы хотите получить и архивацию, и сжатие. Bzip2 сжимает лучше, чем gzip, но процесс сжатия у bzip2 занимает больше времени, чем у gzip.
Команды bzip2:
bzip2 file.tar
Сжимает файл file.tar и создает file.tar.bz2.
bunzip2 file.tbz
Распаковывает file.tbz и создает file.tar
tar jxf file.tbz
Распаковывает архив file.tbz и извлекает из него файлы.