Автор Тема: Как создать или распаковать архив в Linux  (Прочитано 1827 раз)

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 1414
Полезная информация по работе с архивами в 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Извлекает содержимое архива с детальным выводом процесса извлечения данных.
zip
zip может одновременно и архивировать, и сжимать файлы; то есть вы можете сжать различные файлы, поместив их при этом в архив. Он известен еще с 1998 года и метод его работы был реализован на многих платформах, следовательно, это один из самых мобильных вариантов (особенно – если вам необходим доступ к вашему архиву из системы Windows).
Работа с zip:
zip -r archive folderСоздает архив archive.zip с содержимым каталога folder.
unzip archive.zipИзвлекает содержимое архива archive.zip в текущую директорию, создавая вложенные директории (используйте -j чтоб не создавать вложенных директорий).
gzip
gzip может сжимать файлы, но не архивировать. Однако он прекрасно работает, если его использовать вместе с архивирующим инструментом – как бывает на практике, 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'').
bzip2
bzip2, как и 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 и извлекает из него файлы.

« Последнее редактирование: 25 Август 2015, 14:24:07 от ivm »
Что непонятно спрашиваем, если всё понятно - пользуемся.

Оффлайн alv

  • Ветеран
  • *****
  • Сообщений: 880
  • Это я и есть
    • Наш Блогосайт
Re: Как создать или распаковать архив в Linux
« Ответ #1 : 24 Август 2015, 21:07:50 »
Игорь, наверное, про xz неплохо добавить?
Ведь нынче это
а) уже стандарт, и
б) очень хорошая штука.
Ну, что он хорошо сжимает, все знают и я знал :)
Но тут обнаружил, что на современных многоядерных процессорах он ещё и очень быстро это делает. То есть на моём 4-ядернике с HT он реально загружает все 8 потоков, так что gzip плетётся далеко сзади, а bzip2 вообще остаётся за горизонтом.
Это я когда с refracta развлекался, обнаружил: поставил для пробы галочку использовать xz - и еле успел покурить, как он запаковал мои полтора гигабайта.
За прекрасных дам!

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 1414
Re: Как создать или распаковать архив в Linux
« Ответ #2 : 24 Август 2015, 21:48:43 »
Цитировать
Формат XZ используется GNU Coreutils, начиная с версии 7.1. Начиная с версии 1.22, GNU tar позволяет автоматически сжимать и распаковывать архивы tar с помощью xz, обеспечивая прозрачную работу....

Есть ещё Тест архиваторов в Linux. Получается, что действительно не заслуженно обойдён вниманием, но информации о его применении в сети крайне мало.
Запаковывается с ключами tar -c --xz   -f archive.tar.xz   /some_directoryРаспаковывается архив с расширением .tar.xz tar -xpJf archive.tar.xz
« Последнее редактирование: 25 Август 2015, 13:55:22 от ivm »
Что непонятно спрашиваем, если всё понятно - пользуемся.

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2183
  • Да будет свет!
Re: Как создать или распаковать архив в Linux
« Ответ #3 : 24 Август 2015, 22:16:01 »
Проверила работу данного формата контейнера в Matuntu-TT64-mini. Каталог размером 50,2 МБ сжался до 19,2 МБ без каких-либо дополнительных настроек

В дистрибутивах Trusty Tahr формат XZ поддерживается архиватором TAR.
Делай с нами, делай как мы, делай лучше нас!

Оффлайн alv

  • Ветеран
  • *****
  • Сообщений: 880
  • Это я и есть
    • Наш Блогосайт
Re: Как создать или распаковать архив в Linux
« Ответ #4 : 24 Август 2015, 23:50:22 »
Ребята, то, что xz жмёт очень сильно - ясно, LZMA подразумевает. Но то, что в нём хорошо реализовали многопоточность... Ну читал я про это, ну даже верил... Но когда это видишь своими глазами - понимаешь, что это действительно блеск, и остаётся только снять шляпу перед разработчиками.
Умеют же некоторые...
За прекрасных дам!

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 1414
Re: Как создать или распаковать архив в Linux
« Ответ #5 : 24 Август 2015, 23:58:59 »
Как-то довелось экспериментировать с архивацией в jar, результат помню до сих пор. Фильм mkv кодек AVC  с предельным битрейтом сжался ровно в два раза. После распаковки видеобитрейт остался прежним, т.е. можно говорить о сжатии без потерь.
Что непонятно спрашиваем, если всё понятно - пользуемся.

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2183
  • Да будет свет!
Re: Как создать или распаковать архив в Linux
« Ответ #6 : 25 Август 2015, 15:07:27 »
Для удобства хранения архива к имени создаваемого можно добавить дату его создания -`date '+%d-%B-%Y'`Например, tar czvpf имя создаваемого архива-`date '+%d-%B-%Y'`.tar.gz имя архивируемой директории/
Делай с нами, делай как мы, делай лучше нас!

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 1414
Re: Как создать или распаковать архив в Linux
« Ответ #7 : 31 Август 2015, 09:33:20 »
Советую также почитать статью Архиватор tar, что за зверь?
Что непонятно спрашиваем, если всё понятно - пользуемся.

Оффлайн alv

  • Ветеран
  • *****
  • Сообщений: 880
  • Это я и есть
    • Наш Блогосайт
Re: Как создать или распаковать архив в Linux
« Ответ #8 : 31 Август 2015, 10:16:36 »
Советую также почитать статью Архиватор tar, что за зверь?
Игорь, улыбнуло:
Цитировать
Сам по себе tar не является архиватором в привычном понимании этого слова, т.к. он самостоятельно не использует сжатие.
Ну Вы-то знаете, что tar является именно архиватором. А вот компрессором он не является - это да.
Цитировать
Tar - это один из наиболее распространенных архиваторов, который используется в Linux-системах.
Интересно, а автор статьи знает другой архиватор (в общепринятом, а не привычном ему) смысле?
PS О режиме занудства. Ну я могу понять, когда люди, впервые увидевшие Linux, путают монитор с компьютером, а Интернет с Яндексом. Но когда люди, много лет знающие, чем консольный режим отличается от интерфейса CLI, а оба они - от программы Konsole, употребляют эти слова как синонимы - понять не могу.
Для того и сочинил вторую версию Словаря Эллочки-линуксойдочки.
За прекрасных дам!

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 1414
Re: Как создать или распаковать архив в Linux
« Ответ #9 : 31 Август 2015, 11:01:03 »
А что тут понимать? В консоли используется как раз-таки метод ввода текстовых команд. Для многих консоль и интерфейс CLI - если это не синонимы, то взаимосвязанные понятия точно такие как карандаш и бумага - инструменты для записи и зарисовок.
Что непонятно спрашиваем, если всё понятно - пользуемся.

Оффлайн alv

  • Ветеран
  • *****
  • Сообщений: 880
  • Это я и есть
    • Наш Блогосайт
Re: Как создать или распаковать архив в Linux
« Ответ #10 : 31 Август 2015, 11:18:03 »
А что тут понимать? В консоли используется как раз-таки метод ввода текстовых команд. Для многих консоль и интерфейс CLI - если это не синонимы, то взаимосвязанные понятия точно такие как карандаш и бумага - инструменты для записи и зарисовок.
Ну а для немалых консоль - это средство для запуска MC :)
За прекрасных дам!