Форум проекта Matuntu
Программное обеспечение => Программы работы с архивами => Тема начата: ivm от 24 Августа 2015, 19:21:00
-
Полезная информация (http://howtoconfig.net/linux/create-unzip-archive-linux/) по работе с архивами в 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 и извлекает из него файлы.
-
Игорь, наверное, про xz неплохо добавить?
Ведь нынче это
а) уже стандарт, и
б) очень хорошая штука.
Ну, что он хорошо сжимает, все знают и я знал :)
Но тут обнаружил, что на современных многоядерных процессорах он ещё и очень быстро это делает. То есть на моём 4-ядернике с HT он реально загружает все 8 потоков, так что gzip плетётся далеко сзади, а bzip2 вообще остаётся за горизонтом.
Это я когда с refracta развлекался, обнаружил: поставил для пробы галочку использовать xz - и еле успел покурить, как он запаковал мои полтора гигабайта.
-
Формат XZ используется GNU Coreutils, начиная с версии 7.1. Начиная с версии 1.22, GNU tar позволяет автоматически сжимать и распаковывать архивы tar с помощью xz, обеспечивая прозрачную работу.... (https://ru.wikipedia.org/wiki/XZ)
Есть ещё Тест архиваторов в Linux (http://zenux.ru/articles/24/). Получается, что действительно не заслуженно обойдён вниманием, но информации о его применении в сети крайне мало.
Запаковывается с ключами tar -c --xz -f archive.tar.xz /some_directory
Распаковывается архив с расширением .tar.xz tar -xpJf archive.tar.xz
-
Проверила работу данного формата контейнера в Matuntu-TT64-mini. Каталог размером 50,2 МБ сжался до 19,2 МБ без каких-либо дополнительных настроек
(http://storage5.static.itmages.ru/i/15/0824/s_1440443677_1239076_44db2d05c2.png) (http://itmages.ru/image/view/2927264/44db2d05)
В дистрибутивах Trusty Tahr формат XZ поддерживается архиватором TAR.
-
Ребята, то, что xz жмёт очень сильно - ясно, LZMA подразумевает. Но то, что в нём хорошо реализовали многопоточность... Ну читал я про это, ну даже верил... Но когда это видишь своими глазами - понимаешь, что это действительно блеск, и остаётся только снять шляпу перед разработчиками.
Умеют же некоторые...
-
Как-то довелось экспериментировать с архивацией в jar, результат помню до сих пор. Фильм mkv кодек AVC с предельным битрейтом сжался ровно в два раза. После распаковки видеобитрейт остался прежним, т.е. можно говорить о сжатии без потерь.
-
Для удобства хранения архива к имени создаваемого можно добавить дату его создания
-`date '+%d-%B-%Y'`
Например, tar czvpf имя создаваемого архива-`date '+%d-%B-%Y'`.tar.gz имя архивируемой директории/
-
Советую также почитать статью Архиватор tar, что за зверь? (http://linuxsoid.com/blog/arkhivator_tar_chto_za_zver/2014-05-03-138)
-
Советую также почитать статью Архиватор tar, что за зверь? (http://linuxsoid.com/blog/arkhivator_tar_chto_za_zver/2014-05-03-138)
Игорь, улыбнуло:
Сам по себе tar не является архиватором в привычном понимании этого слова, т.к. он самостоятельно не использует сжатие.
Ну Вы-то знаете, что tar является именно архиватором. А вот компрессором он не является - это да.
Tar - это один из наиболее распространенных архиваторов, который используется в Linux-системах.
Интересно, а автор статьи знает другой архиватор (в общепринятом, а не привычном ему) смысле?
PS О режиме занудства. Ну я могу понять, когда люди, впервые увидевшие Linux, путают монитор с компьютером, а Интернет с Яндексом. Но когда люди, много лет знающие, чем консольный режим отличается от интерфейса CLI, а оба они - от программы Konsole, употребляют эти слова как синонимы - понять не могу.
Для того и сочинил вторую версию Словаря Эллочки-линуксойдочки.
-
А что тут понимать? В консоли используется как раз-таки метод ввода текстовых команд. Для многих консоль и интерфейс CLI (https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8) - если это не синонимы, то взаимосвязанные понятия точно такие как карандаш и бумага - инструменты для записи и зарисовок.
-
А что тут понимать? В консоли используется как раз-таки метод ввода текстовых команд. Для многих консоль и интерфейс CLI (https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8) - если это не синонимы, то взаимосвязанные понятия точно такие как карандаш и бумага - инструменты для записи и зарисовок.
Ну а для немалых консоль - это средство для запуска MC :)