Tar windows добавить файл в архив

Название tar архива образовано от сочетания Tape ARchive, так как было разработано для записи последовательных данных на ленточные устройства. Также иногда встречается название tarball.

По умолчанию tar архивирует файлы только без сжатия, но с использованием некоторых частей. Мы можем использовать различные методы сжатия, чтобы на выходе получить архив меньшего размера. Утилита tar обычно включается в большинство дистрибутивов Linux по умолчанию, а сам формат поддерживается другими операционными системами, включая Windows и macOS, с помощью различных инструментов и утилит.

В этой статье мы рассмотрим некоторые общие примеры использования команды tar и поддерживаемые флаги.


1. Создание tar архива

Для создания обычного архива без сжатия достаточно ввести команду ниже:

$ tar cvf <tar-file-name> <files-to-archive>

Здесь флаги c обозначает создание, v обозначает подробный вывод и f обозначает имя файла архива tar. По соглашению укажите имя файла tar с расширением .tar. Архивируемые файлы могут быть определены с помощью подстановочных знаков или же можно указать один файл или несколько файлов/путей.

В качестве примера можно привести три файла в каталоге:

Создание tar архива

Создать архив, содержащий все три файла, можно следующим образом:

Создание tar архива

Также можно указать только конкретные файлы для архивирования, например:

Создание tar архива


2. Создание сжатого архива (GZ)

tar позволяет не только архивировать файлы, но и сжимать их для экономии места. Одним из популярных форматов сжатия является gunzip, обычно представленный расширением .gz после .tar или как tgz. Мы можем использовать флаг z, чтобы указать, что файлы должны быть сжаты с помощью gunzip. Вот пример:

Создание сжатого архива

Можно заметить, что размер архивных файлов существенно отличается, хотя оба содержат одни и те же три файла. Это связано с использованием сжатия с использованием флага z.


3. Создание сжатого архива (BZ)

tar поддерживает несколько других форматов сжатия. Одним из них является bz2 или bzip2, который представлен расширением tar.bz2 или иногда как tbz2. Это может дать вам меньший размер архива, но, в свою очередь, потребляет больше ЦП, так что процесс сжатия/декомпрессии может быть медленнее, чем gz архив. Для создания bz архива используется флаг j:

Создание сжатого архива


4. Распаковка всех файлов

Архив tar (сжатый или несжатый) можно извлечь с помощью опции x. Ниже приведены примеры, поясняющие его использование:

Распаковка всех файлов

Эта команда также работает для сжатого архива формата gz:

Распаковка всех файлов

И даже для архива со сжатием bz2:

Распаковка всех файлов


5. Просмотр содержания архива

Чтобы перечислить содержимое архива tar, можно использовать флаг t, как показано ниже:

Просмотр содержания архива


6. Распаковка конкретных файлов

Из архива tar, tar.gz или tar.bz2 можно извлечь как все файлы, так и один конкретный файл, указав имя файла:

Распаковка конкретных файлов

Аналогично, можно указать несколько имен файлов, разделенных пробелом, чтобы извлечь их вместе за один переход.

Распаковка конкретных файлов


7. Распаковка с помощью маски

Чтобы извлечь один или несколько файлов с помощью шаблона PATTERN, используйте флаг --wildcards:

Распаковка с помощью маски


8. Добавление файлов в архив

В существующий несжатый архив можно добавлять новые файлы используя флаг r или --append с новыми именами файлов или шаблоном подстановочных символов (помните, что это работает только с несжатыми TAR-файлами, а не со сжатыми форматами tar.gz или tar.bz2):

Добавление файлов в архив

Можно увидеть, что содержимое списка archive.tar показывает два только что добавленных файла.


9. Удаление файлов из архива

Удаление определенных файлов из архива tar возможно с помощью флага --delete, как показано ниже (сравните список tar до и после удаления файлов):

Удаление файлов из архива

Опять же это работает только для несжатых архивов и завершится неудачей для сжатых форматов архива.


10. Создание архива с проверкой

При создании несжатых архивных файлов можно проверить содержимое архива, используя флаг W как показано ниже:

Создание архива с проверкой

Этот флаг нельзя использовать с флагами сжатия, хотя можно сжать созданный файл tar позже с помощью gzip или других инструментов.


11. Распаковка архива в папку

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

Распаковка архива в папку


12. Использование флага –diff

Можно использовать флаг --diff или d для поиска любых изменений между файлами в архиве tar и файлами в файловой системе. Вот пример, который запускает diff один раз, когда файл внутри архива и снаружи был один и тот же. Если запустить команду снова после обновления файла, то можно увидеть разницу в выходных данных.

Использование флага –diff


13. Исключение файлов

Исключение определенных файлов может быть обязательным при создании архивов tar. Этого можно достичь с помощью флага --exclude.

Исключение файлов

Как можно заметить из приведенных выше выходных данных, можно задать флаг --exclude несколько раз, чтобы указать несколько имен файлов или шаблонов связывая их логическим AND. Следует отметить, что из шести файлов в директории в приведенном выше примере только два файла удовлетворяли условию, которое должно быть включено в archive.tar.gz.


14. Просмотр размера содержимого архива

Размер содержимого сжатого архива tar можно получить с помощью следующей команды:

Просмотр размера содержимого архива

Аналогично для архива bz2:

Просмотр размера содержимого архива


15. Архивация с сохранением разрешений

По умолчанию команда tar сохраняет разрешение архивированных файлов и каталогов, хотя можно явно указать его с помощью флага -p или --preserve-permissions, как показано ниже.

Архивация с сохранением разрешений


Заключение

tar — полезная утилита в системах Unix/Linux в течение долгого времени и в первую очередь использовалась в задачах архивирования и резервного копирования. С течением времени утилита развивалась и приобретала многие опции. Он может использоваться для простых и сложных задач, если вы знаете, какие функции он предлагает. В этой статье описаны некоторые основные операции, которые можно выполнить с помощью команды tar, и показано, как она может помочь в выполнении повседневных задач системного администрирования.

Для получения дополнительных сведений обратитесь воспользуйтесь встроенным руководством Linux с помощью команда man tar или используйте команду tar --help или tar --usage.

The tar command, which is very common in Unix and Linux systems for archiving and compressing files (also known as zipping), is also available in Windows 11 and Windows 10. It mainly helps you pack many files and folders into one file, called a tarball. In this guide, we’ll show you how to use the tar command in Windows to make ZIP archives.

Also see: How to Open or Extract .Gz, Tar.gz or .Tar File in Windows 11/10

How to Use Tar to Create Zip Archive Files in Windows 11

Check if you have tar installed in Windows 11

Before we start making ZIP files with the tar command, make sure you have all the needed tools on your Windows 11 or Windows 10 PC. Starting with Windows 10’s Fall Creators Update and also in Windows 11, the tar command is built-in and you can use it from Command Prompt or PowerShell. Below is how you can check if tar is on your computer and install it if it’s not.

  1. Open Command Prompt or PowerShell.
  2. Type tar --version and press Enter.
  3. If you see a version number, tar is already on your computer. If you get an error or the command doesn’t work, you need to install it.
    Check if tar is installed CMD Windows 11

  4. If tar is not on your computer, the simplest way to install it is by turning on the Windows Subsystem for Linux (WSL).
  5. Go to the Windows search bar, type “Turn Windows features on or off”, and click on it.
  6. In the Windows Features window, tick the box for “Windows Subsystem for Linux” and click OK.
  7. Restart your computer when asked.
  8. After restarting, you can install the Linux version you like from the Microsoft Store, like Ubuntu.
    WSL Ubuntu Windows 11

  9. Once you have WSL with your chosen Linux version installed, you can use tar by starting the Linux app from the Start menu.
  10. You can also use tar directly in Windows Command Prompt or PowerShell.

With tar ready to use on your Windows machine, you can now start making ZIP archive files. In the next part, we’ll go through the basic commands and how to use them.

Suggested read: How to Zip Files and Folders in Windows 11/10 Without Any Software

Create ZIP archives with tar command

Now that you have tar ready on your Windows computer, let’s see how to use it to make ZIP archive files. It’s quite simple and uses basic command line steps.

  1. Start Command Prompt or PowerShell, whichever you like more.
  2. Move to the folder where your files are by using the cd command. For instance, cd C:\Users\Username\Desktop\.
    Change directory to current folder CMD

  3. The basic way to make a ZIP file with tar is like this:
    tar -a -c -f archive_name.zip file_or_directory_to_compress
  4. Here, -a picks the ZIP format automatically, -c means create, and -f names the archive.
  5. To make a ZIP archive of a folder called MyFolder, the command would be:
    tar -a -c -f myarchive.zip MyFolder

    Use tar to create ZIP archive files in Windows 11

  6. This command makes a ZIP file named myarchive.zip with MyFolder inside.
  7. You can also pack several files or folders in one go:
    tar -a -c -f myarchive.zip file1.txt file2.txt MyFolder

    Zip archiving multiple files and directories with tar command

  8. This makes a ZIP file with file1.txt, file2.txt, and the MyFolder folder inside.
  9. To check if your files are correctly packed, you can list what’s in the ZIP file:
    tar -tf myarchive.zip

    Check tar zip archive files Windows

  10. This shows the files in myarchive.zip.

Pro tip: How to Split a File Into Multiple Files in Windows 11

In the next part, we’ll share some extra tips to make your ZIP archiving with tar even better.

Some tips for more efficient ZIP archiving with tar command

The basic tar command for making ZIP files is simple, but there are more options and tricks that can help you archive better and fit your needs.

  1. Usually, tar makes the ZIP file right where you are. To make the archive in a different place, add the path to the archive name. For example:
    tar -a -c -f C:\Archives\myarchive.zip MyFolder

    Creating tar zip archives in a specific directory

  2. Sometimes, you might not want to include certain files or folders in the archive. Use the --exclude option for this:
    tar -a -c -f myarchive.zip --exclude="file1.txt" MyFolder

    Excluding files and directories when using tar to create zip archives

  3. You can use wildcards (*) to pack files that match a certain pattern. For example, to pack all .txt files:
    tar -a -c -f textfiles.zip *.txt

    Tar create zip archives with wildcards

  4. If you want to see the files being packed, add the -v (verbose) option:
    tar -a -cvf myarchive.zip MyFolder

    Verbose in tar create zip archive Windows 11

  5. This will show each file as it’s added to the archive.
  6. After making an archive, it’s good to check if it’s all okay. Do this by:
    tar -tvf myarchive.zip

    Checking tar zip archive integrity

  7. This not only shows the contents but also checks if the files are fine.
  8. While -a picks ZIP compression by itself, you can choose other compression methods like gzip or bzip2 with -z or -j:
    tar -czf myarchive.tar.gz MyFolder
    tar -cjf myarchive.tar.bz2 MyFolder

    Tar create tar.bz2 compression in Windows 11

  9. Note that these commands make .tar.gz or .tar.bz2 files, not ZIP.
  10. For batch archiving multiple directories into separate archives, you can use a simple script or loop in the command line. For example, in PowerShell:
    foreach ($folder in Get-ChildItem -Directory) {
    tar -a -c -f "$($folder.Name).zip" "$folder"
    }

    How to batch archive zip files using tar in CMD Windows 11

Useful guide: Move All Files from Subfolders to Main Folder (Windows)

Create tar.gz and tar archives with tar command in Windows 11

Besides making ZIP files, the tar command in Windows can also make .tar.gz (tarball compressed with gzip) and .tar (uncompressed tarball) archives. These types are very common in Unix and Linux systems and are useful for many things, like backing up and sharing software.

Create a tar.gz archive

  1. To make a .tar.gz archive, use the -z option for gzip compression. The basic command looks like this:
    tar -czf archive_name.tar.gz file_or_directory_to_compress
  2. Here, -c means create, -z applies gzip compression, and -f names the archive file.
  3. To compress a folder called MyFolder into a .tar.gz archive, the command is:
    tar -czf myfolder.tar.gz MyFolder

    How to create tar.gz archive files in Windows 11 CMD

Create a tar archive

  1. Making an uncompressed tar archive is simple. Just leave out the compression option (-z for gzip or -j for bzip2). The command goes like this:
    tar -cf archive_name.tar file_or_directory_to_compress
  2. To pack MyFolder into a .tar file, use:
    tar -cf myfolder.tar MyFolder

    Use tar command to create tar file in Windows 11

Some other options

  • Just like with ZIP archiving, you can use the -v (verbose) option to see the files being added to the archive.
  • The --exclude option works the same way as with ZIP files, letting you leave out specific files or folders.
  • Use tar -tf archive_name.tar.gz or tar -tf archive_name.tar to list what’s in your .tar.gz or .tar archive.
    Check the content of a tar archive file in CMD

Использование tar в Linux и FreeBSD для работы с архивами

Обновлено:
Опубликовано:

Тематические термины: Linux, FreeBSD.

Утилита командной строки tar используется для работы с архивами в операционных системах на базе UNIX. С ее помощью можно архивировать данные и оптимизировать использование дискового пространства. Мы рассмотрим ее синтаксис, опции и примеры использования.

Создание и распаковка
Форматы
    gz    bz2    gzip    tgz    xz    tbz
Ключи (опции)
Примеры
    Папка назначение
    Без вложенной папки
    Конкретный файл или каталог для распаковки
    Исключение файлов по маске
    Работа с многотомными архивами
    Создаем tar и сжимаем его
    Рекурсивные распаковки
ZIP
Windows

Рассмотрим общий синтаксис для создания и распаковки архивов.

Создать

Создание выполняется с ключом c. Синтаксис следующий:

tar -c<опции> <новый архивный файл> <что сжимаем>

Пример создания:

tar -czvf archive.tar.gz /home/dmosk

* в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk)
** где z — сжать архив в gzip (без этого параметра, tar не сжимает, а создает так называемый тарбол); c — ключ на создание архива; v — verbose режим, то есть с выводом на экран процесса (очень удобно для наблюдением за ходом работы, но в скриптах можно упустить); f — использовать файл (обязательно указываем, так как в большей степени работаем именно с файлами).

Распаковать

Распаковка выполняется с ключом x с синтаксисом:

tar -x<опции> <архивный файл> 

Пример распаковки:

tar -xvf archive.tar.gz 

Форматы

Утилита tar позволяет работать с архивами различных форматов. Рассмотрим их кратко.

gz

Сжатие:

tar -cf archive.tar.gz /files

Распаковка .gz файла:

tar -xf archive.tar.gz 

* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.

bz2

tar -xvjf archive.tar.bz2

* ключ j отвечает за работу с bz2.

Если система ругается на bzip2, значит нужно его установить:

yum install bzip2

apt-get install bzip2

pkg install bzip2

* соответственно, для CentOS (RPM based), Ubuntu (deb based), FreeBSD (BSD based).

Если видим ошибку tar: Unrecognized archive format, воспользуемся следующей командой:

bzip2 -d archive.tar.bz2

gzip

tar -xvzf archive.tar.gzip

* ключ z отвечает за работу с gzip.

tgz

TGZ — tar-архив, сжатый с помощью утилиты gzip. По сути, это тот же tar.gz, и работа с ним ведется такими же командами. Рассмотрим примеры работы с данным форматом.

Для создания архива tgz выполняем:

tar -czf archive.tgz /files

Распаковывается, как gzip:

tar -xzf archive.tgz

xz

Это формат сжатия данных с помощью алгоритма LZMA. Для работы с ним устанавливаем:

apt install xz-utils

* на Debian / Ubuntu. 

yum install xz

* на Rocky Linux / CentOS.

Теперь можно пользоваться.

Создать архив:

tar -cpJf archive.tar.xz /home/user

Распаковка:

tar -xpJf archive.tar.xz

tbz

Это tar-архив, сжатый с помощью Bzip. Работа с ним напоминает работу с bz2.

Создать архив:

tar -cjf archive.tbz /home/user

Распаковка:

tar -xjf archive.tbz

Команды для действия

Ключ Описание
-A Добавление файлов в архив.
-c Создание нового архивного файла.
-d Показать отличающиеся данные между каталогом-исходником и содержимым архива.
—delete Удалить файлы внутри архива.
-r Добавить файлы в конец архива.
-t Показать содержимое архива.
-u Добавить файлы, которых нет в архиве.
-x Извлечь файлы из архива.

* нельзя использовать несколько вышеперечисленных ключей в одной команде.

Дополнительные опции

Ключ Описание
—atime-preserve Оставить прежнюю метку времени доступа для файла.
-b N Задать размер блока N x 512.
-C Смена каталога. По умолчанию, используется тот, в котором мы находимся.
—checkpoint Показать имена папок при чтении архивного файла.
-G Использование старого формата инкрементального резервирования при отображении или извлечения.
-g Использование нового формата инкрементального резервирования при отображении или извлечения.
-h Не дублировать символьные ссылки. Только файлы, на которые указывают эти симлинки.
-i Игнорировать блоки нулей.
-j Использование bzip2.
—ignore-failed-read Игнорировать не читаемые файлы.
-k При распаковке, существующие файлы не заменяются соответствующими файлами из архива.
-L N Смена магнитной ленты после N*1024 байт.
-m При извлечении игнорировать время модификации объекта.
-M Многотомные архивы.
-N DATE Сохранять только более новые файлы относительно DATE
-O Направление извлекаемого на стандартный вывод.
-p Извлечение защищенной информации.
-P Не отбрасывает начальный слэш (/) из имен.
-s Сортировка файлов при извлечении.
—preserve Аналогично -ps
—remove-files Удалить исходные файлы после добавления в архив.
—same-owner Сохранить владельца при извлечении.
—totals Вывод байт при создании архива.
-v Протоколирование действий — отображение списка объектов, над которыми происходит действие.
-V NAME Создание архива на томе с меткой NAME.
—version Показать версию tar.
-w Требовать подтверждения для каждого действия.
-W Проверка архива после записи.
—exclude FILE Исключить файл FILE.
-X FILE Исключить файлы FILE.
-Z Фильтрует архив с помощью compress.
-z Использование gzip.

* актуальный список опций можно получить командой man tar.

Примеры

Рассмотрим некоторые сценарии использования tar.

Распаковать в определенную папку

tar -C /home/user -xvf archive.tar.gz

* ключ -C используется для указания папки, куда необходимо распаковать файлы из архива.

Распаковка без вложенной папки

Такой способ можно использовать для распаковки в заранее подготовленный каталог. Будет некий эффект переименовывания каталога или аналог «Распаковать здесь»:

tar -C /home/admin/mytar -xvf admin.tar.gz —strip-components 1

* каталог /home/admin/mytar заранее должен быть создан; —strip-components 1 пропустит одну вложенную папку внутри архива.

Указать конкретный файл или каталог для распаковки

Если у нас большой архив, но извлечь нужно конкретный файл или каталог, то можно указать его через пробел после указания файла с архивом. Синтаксис:

tar zxf <путь до архива> <что извлечь>

Рассмотрим пример. Напомним, что можно посмотреть содержимое архива с помощью опции t:

tar tf /backup/samba.tar.gz

Теперь можно распаковать архив:

tar -zxf /backup/samba.tar.gz mail

* предположим, что внутри архива samba.tar.gz есть что-то и каталог mail. Извлечем мы только последний.

Исключение файлов по маске

Если необходимо пропустить некоторые файлы, вводим команду с ключом —exclude:

tar —exclude=’sess_*’ -czvf archive.tar.gz /wwwsite

* в данном примере мы создадим архив archive.tar.gz, в котором не будет файлов, начинающихся на sess_.

Также можно исключить несколько файлов или папок, добавляя несколько опций exclude:

tar —exclude=’/data/recycle’ —exclude=’*.tmp’ -zcf /backup/samba/2021-08-29.tar.gz /data/

* в данном примере мы исключим папку recycle и файлы, которые заканчиваются на .tmp

Работа с архивами, разбитыми на части

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

Чтобы создать архив, разбитый на части, вводим команду:

tar -zcvf — /root | split -b 100M — root_home.tar.gz

* данная команда создаст архив каталога /root и разобьет его на части по 100 Мб.

Если у нас уже есть архив, который нужно разбить, команда будет такой:

split -b 100M root_home.tar.gz root_home.tar.gz

* в данном примере архив root_home.tar.gz будет разбит на части, состояние из файлов по 100 Мб.

В итоге мы получим, примерно, такую картину:

root_home.tar.gzaa  root_home.tar.gzac  root_home.tar.gzae
root_home.tar.gzag  root_home.tar.gzai  root_home.tar.gzab
root_home.tar.gzad  root_home.tar.gzaf  root_home.tar.gzah

Чтобы собрать архив и разархивировать его, вводим команду:

cat root_home.tar.gz* | tar -zxv

Если мы хотим только собрать разбитый архив, вводим:

cat root_home.tar.gz* > root_home.tar.gz

Создание tar из отдельных файлов с последующим его архивированием

Мы можем собрать файл tar, добавляя по очереди в него файлы, после чего создать сжатый архив. Предположим, у нас 3 файла: file1, file2, file3.

Сначала создадим tar-файл с первым файлом внутри:

tar -cf ./my_archive.tar ./file1

Следующими двумя командами мы добавим в архив файлы file2 и file3:

tar -rf ./my_archive.tar ./file2

tar -rf ./my_archive.tar ./file3

Сожмем содержимое tar-файла:

gzip < ./my_archive.tar > ./my_archive.tar.gz

Файл tar можно удалить:

rm -f my_archive.tar

Рекурсивная распаковка

Предположим, что у нас есть архив, в котором есть еще архив. И еще и еще много раз. Чтобы не заниматься ручной распаковкой, можно использовать команду с while:

while [ -f *.tar.gz ]; do filename=»$(ls -1 *.tar.gz | head -n 1)»; tar -xvf $filename && rm $filename; done;

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

ZIP

Tar не работает с zip-архивами. В системах UNIX для этого используем утилиты zip и unzip. Для начала, ставим нужные пакеты:

yum install zip unzip

apt-get install zip unzip

pkg install zip unzip

* соответственно, для RPM based, deb based, BSD based.

Создание ZIP:

zip -r archive.zip /home/dmosk

* создает архив каталога /home/dmosk в файл archive.zip.

Распаковка ZIP:

unzip archive.zip

Windows

В системе на базе Windows встроенными средствами можно распаковать только ZIP-архивы. Для работы с разными архивами рекомендуется поставить архиватор, например 7-Zip.

  • Что такое Tar

  • Как установить, создать архив Tar и распаковать его в Windows

  • Как запаковать архив tar.gz и tar.bz2 в Ubuntu, Debian, CentOS

  • Как распаковать архив tar.gz и tar.bz2 Ubuntu, Debian, CentOS

  • Просмотр архивов tar в Linux

  • Иные возможности tar

Tar — это популярный файловый архиватор в Unix/Linux системах. Tar зачастую используется вместе с архиваторами GZip или BZip2, так как они отлично взаимодополняют друг друга: Tar не может сжимать файлы, только собирать их в одни архив, а GZip и BZip2 не могут сжимать несколько файлов одновременно, поэтому если вам нужно запаковать несколько файлов и директорий, сначала они собираются в один несжатый архив с помощью Tar, который сохранит их некоторые атрибуты, например такие, как права доступа, а затем этот архив сжимается с помощью GZip или BZip2. Весь процесс запускается одной консольной командой, про которые далее.

Как установить, создать архив Tar и распаковать его в Windows

Чтобы использовать Tar в Windows, нужно воспользоваться одним из следующих вариантов:

  1. Установить Far Manager.
    Инструкция по созданию и распаковке архива .tar с помощью Far Manager:

    • Теперь просто выделяете ПКМ (правой кнопкой мыши) или кнопкой клавиатуры Insert нужные вам файлы и папки и жмёте Shift + F1, затем выбираете нужный формат (в нашем случае, TAR) и создаёте архив:

      Создание архива в Far Manager

      Создание архива в Far Manager

      При желании, в поле Добавить к архиву можно изменить название архива, а в поле Ключи можно ввести пароль от него.

    • Чтобы распаковать архив Tar, просто выделяете ПКМ или Insert нужный архив и жмёте Shift + F2

      Как распаковать Tar в Far Manager

      Как распаковать Tar в Far Manager

      В поле Распаковать в вводится путь, куда распаковать архив. Если нужно распаковать в текущую папку, нужно оставить поле Распаковать архив пустым. Если архив запаролен, пароль вводится в поле Пароль.

  2. Также, можно обойтись без Far Manager, установив 7-Zip

    Скачать 7-zip архиватор

    Скачать 7-zip архиватор

    Всё управление — создать архив и распаковать его — через ПКМ и Проводник Windows

Как запаковать архив tar.gz и tar.bz2 в Ubuntu, Debian, CentOS

tar cfvz archive.tar.gz *.php

где tar — команда, cfvz — ключи, archive.tar.gz — имя будущего архива, *.php — список файлов, которые нужно заархивировать.
Список можно заменить директорией, которую нужно запаковать целиком, для этого указываем путь до неё, абсолютный или относительный

tar cfvz archive.tar.gz /forpack

Теперь подробнее про ключи

  • — команда, которая означает «создать архив»
  • -f — команда на упаковку файлов и директорий в один файл архива
  • -v — включает визуальное отображение процесса архивации
  • -z — использовать для сжатия GZip

Также, можно использовать для сжатия BZip2. Для этого нужно использовать ключ -j вместо -z.
В этом случае, команда для запаковки tar.bz2 будет выглядеть так

tar cfvj archive.tar.bz2 /forpack

Вместо GZip и BZip2 можно пользоваться иными архиваторами, для этого просто нужно подобрать соответствующий ключ.

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

tar cfvz wp-content.tgz wp-content --exclude=wp-content/updraft --exclude=wp-content/uploads --exclude=wp-content/cache

Тут мы запаковываем каталог /wp-content/ на WordPress, исключая раздел Updraft wp-content/updraft, раздел Загрузки wp-content/uploads и Кеш wp-content/cache.

Важный момент — чтобы исключить ошибки, не указывайте слеш / в конце пути исключаемого каталога.

Как распаковать архив tar.gz и tar.bz2 Ubuntu, Debian, CentOS

Чтобы распаковать архив tar.gz или tar.bz2, в команде нужно заменить на ключ -x, а также указать путь до архива, абсолютный или относительный
Команда для распаковки архива в текущую директорию выглядит так

tar xfvz archive.tar.gz 

С помощью ключа можно указать путь, куда нужно распаковать архив

tar xfvj archive.tar.bz2 -C /var/www

Просмотр архивов tar в Linux

Для просмотра содержимого архивов можно использовать ключ -t

tar -tf archive.tar.bz2

Будет выведен список файлов и директорий в архиве. При добавлении ключа -v также будет выведена подробная служебная информация о правах доступа, размерах файлов и прочем.

Иные возможности tar

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

tar --help

Загрузка…

Введение

Из этого модуля вы узнаете о еще одном принципиальном отличии Linux и Windows, только теперь в части работы с архивами. Тема несложная, но крайне прикладная. Приступим!

Архивация Linux vs Windows

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

В системе Windows, как вы знаете, большую популярность приобрели Zip-архивы, поэтому Microsoft даже реализовала их поддержку на уровне системы под названием «сжатых папок». Данный формат включает одновременно и архивирование, и сжатие, в связи с чем эти слова в мире Windows произносят вместе и скороговоркой «архивированиеисжатиефайлов»…, как будто в баню дровишки принес и высыпал.

В то же время в системе Linux граница между этими технологиями проведена настолько четко, что они реализованы в разных форматах и для работы с ними требуются разные приложения! Поэтому давайте уточним эти понятия:

  • Архивирование — это процесс объединения нескольких файлов в один пакет, называемый архивом, для его дальнейшего хранения в безопасном месте и последующего восстановления с сохранением всей необходимой метаинформации об исходных файлах: дате создания и последнего изменения, владельцах, правах доступа и т.д.

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

    Для архивирования используют утилиты tar, dd, cpio. Обратное действие по извлечению исходных файлов из архива называют распаковкой, разархивированием или восстановлением данных из архива.

    Архивирование само по себе не включает сжатие данных, но используется вместе с ним.

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

    Для сжатия файлов в Linux используют утилиты gzip, bzip2, xz и др. Обратное действие по извлечению исходных данных из сжатых файлов называют декомпрессией, восстановлением данных из сжатого файла.

Вот и получается, что когда нам нужно из Windows отправить несколько документов одним файлом, то это вопрос создания простого zip-архивчика. А стоит нам подключиться к веб-серверу по SSH, как отправка нескольких журналов в техподдержку превращается в двухэтапный процесс, сопряженный с фундаментальными идеями архивирования и сжатия информации.

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

Работа с архивами из графического интерфейса Fly

Архивы довольно часто используются в повседневной работе, поэтому всем пользователям нужно обладать хотя бы базовыми навыками по работе с ними. Файловый менеджер операционной системы Astra Linux позволяет делать это столь же просто, как мы к этому привыкли в Windows.

Для создания архива достаточно выделить в окне нужные объекты, кликнуть правой кнопкой мыши и в контекстном меню выбрать команду , см. рис. 59.

../_images/alse_mod14_archive_creation.png

рис. 59 Меню Упаковать: Упаковать в архив

Вам будет доступен большой перечень алгоритмов сжатия: 7-zip, jar, bzip, gzip и др., см. рис. 60.

../_images/alse_mod14_compression_method_selection.png

рис. 60 Выбор способа сжатия

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

Для просмотра и извлечения информации из архива вы можете легко «зайти в него», как в обычную папку, но этот способ не отличается высокой производительностью, поэтому подходит только в тех случаях, когда вам нужно извлечь всего пару файлов или просто ознакомиться с содержанием архива. Если же вы попробуете таким способом распаковать архив Apache Directory Studio, то вам потребуются минуты, на протяжении которых приложение будет пугать вас своей оценкой в несколько часов.

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

Примечание

О самораспаковывающихся архивах.

Некоторые архиваторы позволяют создавать так называемые самораспаковывающиеся архивы (от англ. self-extracting archive, SFX), которые представляют собой исполняемые файлы, способные извлекать заложенную в них информацию без дополнительных приложений. В Windows такие архивы стали довольно популярны, а в Linux их саботируют, в том числе и по соображениям безопасности.

Однако в техническом плане для создания SFX-архивов в Linux есть все необходимые инструменты, и, чтобы поместить папку myfolder в исполняемый файл myarchive.7z.sfx, достаточно выполнить команду 7za a -sfx7zCon.sfx myarchive.7z.sfx myfolder. Но мы бы не рекомендовали отправлять такой файл Linux-администратору и объяснять, что с ним нужно сделать, если вы не хотите услышать, куда вам нужно пойти.

В завершение стоит отметить, что функции архивации в файловом менеджере Fly реализованы с помощью приложения Ark, поэтому пакет этого архиватора должен быть установлен в системе, иначе соответствующие пункты контекстного меню окажутся недоступны. Если же вы захотите работать с приложением Ark напрямую, то запустите его через .

Работа с архивами из командной строки

Архивирование и распаковка утилитой tar

В давние времена резервные копии хранились исключительно на магнитных лентах, поэтому для повышения скорости чтения, записи и поиска информации на этих типах носителей в конце 70-х годов была разработана первая версия программы tar, название которой стало сокращением от слов tape archiver (с англ. ленточный архиватор).

Архивы tar, или как их еще называют тарболы (от англ. tar ball, где ball переводится как «сворачивать в клубок»), позволяют хранить всю необходимую метаинформацию о дате создания файлов, дате последнего изменения, владельцах, правах доступа и т.д., а программа tar умеет их правильно восстанавливать с учетом жестких и мягких ссылок. Именно поэтому администраторы Linux называют tar очень мощным инструментом для работы с архивами, а Windows-админы недоумевают, что в этом инструменте такого мощного, если сам по себе tar-формат даже сжатия данных не предполагает.

Примечание

В Linux кроме утилиты tar довольно часто используют еще dd и cpio. Утилита cpio (от англ. copy input/output — копировать входной/выходной поток) является предшественницей tar, но до сих пор еще часто используется несмотря на то, что tar покрывает все ее функциональные возможности. Утилита dd позволяет копировать блочное устройство в файл и обратно (от англ. disk dump — снимок диска).

Синтаксис утилиты tar следующий:

tar опции файл_архива [список_файлов_для_архивации] [-C каталог_для_распаковки]

Основные параметры и опции:

  • Параметр файл_архива – задает имя файла архива. Параметр является обязательным и должен следовать сразу же после ключа -f (--file).

Примечание

Мы уже знаем, что расширения файлов не играют в Linux большого значения, но скрипты автоматического дополнения команд по нажатию клавиши Tab (из соображений повышения производительности) не анализируют сигнатуру файлов и опираются только на расширения файлов.

Поэтому, если вы хотите, чтобы при использовании tar у вас работало автодополнение имен файлов, не забывайте добавлять к именам тарболов суффикс .tar. А если (вернее, когда) вы станете счастливым обладателем архива, по имени которого ни джобса не понять, чем он был создан, воспользуйтесь утилитой file <имя_архива>.

  • Ключ -f (--file) – позволяет задать имя архива, в который нужно упаковать указанные файлы или из которого их нужно извлечь. Опция является обязательной.

Примечание

Короткий ключ -f должен быть последним в группе опций, так как все последующие за ним символы будут восприняты как имя файла. Мы уже наблюдали такое поведение POSIX-ключей на примере команды ps -aux, которая работает правильно, но является некорректной, так как буква «x» после ключа -u в этом случае трактуется как имя пользователя.

  • Ключ -c (--create) – создать новый архив и поместить в него указанные файлы.

  • Ключ -x (--extract, --get) – извлечь файлы из архива. По умолчанию файлы извлекаются в ту же папку, где находится архив.

  • Ключ -t (--list) – показать содержимое архива.

Примечание

Утилита tar с ключом -t позволяет просматривать содержимое как обычных, так и сжатых тарболов, поэтому вы без проблем сможете посмотреть содержимое архива с помощью команды tar -tf myarchive.tar.gz.

  • Ключ -v (--verbose) – показывает подробную информацию о процессе работы.

  • Параметр список_файлов_для_архивации – имена файлов и папок, которые должны быть помещены в архив. Параметр нужно задать, если используется опция -c (--create). Элементы списка отделяются друг от друга символом пробела.

При извлечении файлов из архива часто указывают каталог:

  • Ключ -C (--directory) – позволяет задать каталог, в который нужно поместить извлекаемые из архива файлы.

  • Параметр каталог_для_распаковки – путь к каталогу, в который нужно поместить извлекаемые из архива файлы.

    Параметр нужно задать, если используется опция -C (--directory).

Дополнительные опции, которые расширят ваши возможности по работе с архивами:

  • Ключ -r (--append) – добавить файлы в конец архива.

  • Ключ -A (--catenate, --concatenate) – добавить архив в конец другого архива.

  • Ключ --acls – сохранить/восстановить списки управления доступом.

  • Ключ --xattrs – сохранить/восстановить расширенные атрибуты файлов.

  • Ключ --exclude – исключить файлы по шаблону, в котором допустимо использовать символы подстановки в стиле glob.

  • Ключ --strip-components – извлечь файлы из вложенных папок архива, отбрасывая начало пути.

    Например, если у вас есть архив, созданный командой tar -cf varfiles.tar /var, то при извлечении файла var/log/auth.log в текущем каталоге будет создана папка var, в ней папка log, и только там вы найдете нужный вам файл.

    Если же вам нужна только игла без всех этих уток и зайцев, то можно отбросить два первых уровня и создать файл auth.log прямо в текущей директории командой:

    tar -xf varbak.tar --strip=2 var/log/auth.log

  • Ключ --wildcards – использовать символы подстановки для выбора определенных файлов, удовлетворяющих критерию.

  • Ключ -u (--update) – обновить архив более новыми файлами с тем же именем.

  • Ключ -h (--dereference) – следовать за символическими ссылками, т.е. архивировать файлы, на которые указывают символические ссылки. По умолчанию в архив добавляются именно ссылки, а не сами файлы.

Рассмотрим использование этих ключей на практических примерах.

Пример 1. Заархивируем файлы каталога в tar-архив.

Сначала нам нужно создать несколько тестовых файлов и каталогов, а чтобы посмотреть созданную нами структуру, мы воспользуемся утилитой tree. Если у вас её еще нет, поставьте ее командой sudo apt-get install tree.

localadmin@astra:~$ cd ~
localadmin@astra:~$ mkdir test_tar
localadmin@astra:~$ cd test_tar/
localadmin@astra:~/test_tar$ mkdir dir{1..3}
localadmin@astra:~/test_tar$ cat ~/.profile | tee dir{1..3}/file{1..2}
...
localadmin@astra:~/test_tar$ tree
.
├── dir1
│   ├── file1
│   └── file2
├── dir2
│   ├── file1
│   └── file2
└── dir3
    ├── file1
    └── file2

Заархивируем директорию dir1, используя ключ -c (--create). Для того чтобы увидеть список файлов, включенных в архив, воспользуемся ключом -v (--verbose). Обязательным параметром утилиты tar является ключ -f (--file), который задает имя файла архива. Дополнительным параметром идет список файлов для архивации. В нашем случае мы указали один каталог dir1.

localadmin@astra:~/test_tar$ tar -cvf archive.tar dir1
dir1/
dir1/file1
dir1/file2

localadmin@astra:~/test_tar$ ls -l
итого 24
-rw-r--r-- 1 localadmin localadmin 10240 авг  2 16:18 archive.tar
drwxr-xr-x 2 localadmin localadmin  4096 авг  2 16:16 dir1
drwxr-xr-x 2 localadmin localadmin  4096 авг  2 16:16 dir2
drwxr-xr-x 2 localadmin localadmin  4096 авг  2 16:16 dir3

localadmin@astra:~/test_tar$ tar -tf archive.tar
dir1/
dir1/file1
dir1/file2

Пример 2. Добавим каталог dir2 к тарболу archive.tar:

localadmin@astra:~/test_tar$ tar -rvf archive.tar dir2
dir2/
dir2/file1
dir2/file2

localadmin@astra:~/test_tar$ tar -tf archive.tar
dir1/
dir1/file1
dir1/file2
dir2/
dir2/file1
dir2/file2

Пример 3. Распакуем содержимое тарбола archive.tar в новый каталог extracted:

localadmin@astra:~/test_tar$ mkdir extracted3
localadmin@astra:~/test_tar$ cd extracted3/
localadmin@astra:~/test_tar/extracted3$ tar -xvf ../archive.tar
dir1/
dir1/file2
dir1/file1
dir2/
dir2/file2
dir2/file1
localadmin@astra:~/test_tar/extracted3$ tree
.
├── dir1
│   ├── file1
│   └── file2
└── dir2
   ├── file1
   └── file2
2 directories, 4 files

Пример 4. Распакуем содержимое сжатого архива archive_dir3.tar.gz в указанный каталог. Для выбора каталога необходимо использовать опцию -C, которая должна идти после имени архива:

localadmin@astra:~/test_tar/extracted3$ cd ..
localadmin@astra:~/test_tar$ mkdir extracted4
localadmin@astra:~/test_tar$ tar -xvf archive.tar -C ./extracted4/
localadmin@astra:~/test_tar$ tree ./extracted4/
./extracted4/
├── dir1
│   ├── file1
│   └── file2
└── dir2
   ├── file1
   └── file2

2 directories, 4 files

Пример 5. Извлечем из архива только папку dir1:

localadmin@astra:~/test_tar/extracted3$ cd ..
localadmin@astra:~/test_tar$ mkdir extracted5
localadmin@astra:~/test_tar$ cd extracted5
localadmin@astra:~/test_tar$ tar -xvf ../archive.tar dir1
localadmin@astra:~/test_tar/extracted5$ tree
.
└── dir1
    ├── file1
    └── file2

Пример 6. Извлечем из archive.tar только file1, используя опцию --wildcards:

localadmin@astra:~/test_tar/extracted3$ cd ..
localadmin@astra:~/test_tar$ mkdir extracted6
localadmin@astra:~/test_tar$ cd extracted6
localadmin@astra:~/test_tar$ tar -xvf ../archive.tar --wildcards '\*file1'
localadmin@astra:~/test_tar/extracted6$ tree
.
├── dir1
|    └── file1
└── dir2
  └── file1

2 directories, 2 files

Сжатие и восстановление данных утилитами gzip, bzip2, xz

Сжатие без потерь основано на устранении избыточности, которая присутствует в исходных данных. Например, можно заменить в тексте длинные слова на короткие числа, и размер файла сразу же уменьшится. Отношение размера исходного файла к размеру сжатого файла называют коэффициентом сжатия.

Примечание

При сжатии данных, которые обладают низкой избыточностью, например, изображений, аудио- и видеоконтента, обычные алгоритмы без потерь, такие как PNG и FLAC, не показывают хороших коэффициентов сжатия.

Однако ученым удалось разработать алгоритмы сжатия с потерями, такие как JPEG, MP3, AVI и др., которые учитывают особенности восприятия этих видов информации человеком и достигают выдающихся результатов без существенного снижения качества контента.

К сожалению, такие подходы не сработают с уже сжатыми данными, которые обладают избыточностью на уровне белого шума. Поэтому сжимать Zip-архив с помощью RAR будет не многим выгоднее, чем майнить криптовалюту Бузовой.

В мире Linux наибольшее распространение получили следующие форматы сжатых файлов:

  • Формат .gz (GNU Zip) использует алгоритм, который лучше всего подходит для сжатия текстовых данных. На текущий момент существует ряд алгоритмов, которые выигрывают и по скорости, и по степени сжатия, но тем не менее формат gz остается самым распространенным форматом для nix-подобных систем. Для работы с этим форматом предназначена утилита gzip.

  • Формат .bz2 использует алгоритм, который медленнее gz, но выдает ощутимо более высокие результаты по сжатию, см. рис. 61. Для работы с этим форматом предназначена утилита bzip2.

  • Формат .xz сжимает данные еще лучше, чем .bz2, но делает это еще медленнее. Для работы с этим форматом применяется утилита xz.

../_images/alse_mod14_compression_speed.png

рис. 61 Зависимость степени и скорости сжатия в современных алгоритмах

Утилиты gzip, bzip2 и xz реализуют разные алгоритмы сжатия, но их объединяет то, что все они обеспечивают сжатие только одного файла, поэтому для создания сжатых архивов, в которых содержится множество файлов, их нужно использовать совместно с утилитой tar.

Утилита gzip

Формат gz является самым распространенным, и утилита gzip по умолчанию включена во все дистрибутивы Linux, так же как поддержка сжатых папок в Windows. Синтаксис утилиты:

gzip <опции> <имя_файла>

Основные параметры и опции:

  • Параметр «имя_файла» – задает имя файла, для которого нужно выполнить сжатие или декомпрессию. Параметр является обязательным.

  • Без опций – вызов команды без ключей выполняет сжатие указанного файла.

  • Ключ -d (--decompress, --uncompress) – выполняет декомпрессию файла. Этот ключ использует Bash-скрипт gunzip.

  • Ключ -c (--stdout) – указывает, что результаты утилиты требуется перенаправить в стандартный поток вывода. При этом исходный файл не удаляется.

    С помощью этой опции вы можете сохранить сжатые данные в файл с любым именем или извлечь их с выводом на экран без сохранения на диске, как делает Bash-скрипт zcat. Чтобы узнать подробнее, см. приведенный ниже пример 5.

Дополнительные опции расширят ваши возможности по работе с архивами:

  • Ключ -# (--fast, --best) – управляет скоростью/коэффициентом сжатия, где -1 (или --fast) соответствует быстрому сжатию с наихудшим коэффициентом, и -9 (--best) соответствует медленному сжатию с наилучшим коэффициентом.

  • Ключ -t – позволяет выполнить проверку целостности сжатого файла.

  • Ключ -l (строчная L, --list) – показывает информацию о коэффициенте сжатия архива.

  • Ключ -f (--force) – выполняет сжатие или распаковку, даже если такой файл уже существует. Если ключ не задан и команда вызвана в интерактивном режиме, то утилита будет спрашивать, нужно ли перезаписывать существующий файл.

  • Ключ -k (--keep) – указывает, что исходный файл удалять не требуется. Данный параметр был добавлен позднее, поэтому его нет в man gzip, но вы можете найти информацию о нем в gzip --help.

  • Ключ -r – интерпретирует имя файла как имя каталога и делает по нему полный обход, выполняя сжатие или декомпрессию всех дочерних файлов.

Рассмотрим использование этих ключей на практических примерах.

Пример 1. Выполним сжатие файла archive.tar, который мы создали ранее, а затем выведем информацию о сжатом файле. Вы увидите, что исходный файл будет заменен сжатым файлом, в имени которого появится суффикс .gz. По умолчанию используется уровень сжатия 6, что обеспечивает хороший коэффициент сжатия при средней скорости.

localadmin@astra:~/test_tar$ gzip archive.tar
localadmin@astra:~/test_tar$ ls
archive_dir3.tar.bz archive_dir3.tar.xz dir1  dir3       extracted2
archive_dir3.tar.gz archive.tar.gz      dir2  extracted  extract
localadmin@astra:~/test_tar$ gzip -l archive.tar.gz
        compressed        uncompressed  ratio uncompressed_name
               624               10240  94.2% archive.tar

Пример 2. Выполним декомпрессию файла. Для этого воспользуемся ключом -d (--decompress):

localadmin@astra:~/test_tar$ gzip -d archive.tar
localadmin@astra:~/test_tar$ ls
archive_dir3.tar.bz   archive_dir3.tar.xz  dir1    dir3         extracted2
archive_dir3.tar.gz   archive.tar          dir2    extracted    extract

Тот же самый эффект можно получить с помощью Bash-скрипта gunzip, который под капотом вызывает gzip с ключом -d. Еще раз выполним сжатие и декомпрессию файла:

localadmin@astra:~/test_tar$ gzip archive.tar
localadmin@astra:~/test_tar$ gunzip archive.tar
localadmin@astra:~/test_tar$ ls
archive_dir3.tar.bz   archive_dir3.tar.xz  dir1    dir3       extracted2
archive_dir3.tar.gz   archive.tar          dir2    extracted  extract

Пример 3. Посмотрим разницу между стандартным, минимальным и максимальным уровнем сжатия, используя перенаправление на стандартный вывод с опцией :

localadmin@astra:~/test_tar$ gzip -c archive.tar > archive.tar.gz
localadmin@astra:~/test_tar$ gzip -c -1 archive.tar > archive_min.tar.gz
localadmin@astra:~/test_tar$ gzip -c -9 archive.tar > archive_max.tar.gz
localadmin@astra:~/test_tar$ ls -l
итого 48
-rw-r--r-- 1 localadmin localadmin   712 авг  2 16:28 archive_dir3.tar.bz
-rw-r--r-- 1 localadmin localadmin   572 авг  2 16:28 archive_dir3.tar.gz
-rw-r--r-- 1 localadmin localadmin   604 авг  2 16:28 archive_dir3.tar.xz
-rw-r--r-- 1 localadmin localadmin   610 авг  3 10:36 archive_max.tar.gz
-rw-r--r-- 1 localadmin localadmin   671 авг  3 10:36 archive_min.tar.gz
-rw-r--r-- 1 localadmin localadmin 10240 авг  2 16:34 archive.tar
-rw-r--r-- 1 localadmin localadmin   624 авг  3 10:32 archive.tar.gz

Пример 4. Проверим в работе опцию рекурсивного сжатия/декомпрессии файлов.

Создадим тестовый каталог и файлы:

localadmin@astra:~/test_compress$ cd ~
localadmin@astra:~$ mkdir -p test_compress/dir_level1/dir_level2 && cd test_compress/
localadmin@astra:~$ echo {00001..99999} > file
localadmin@astra:~$ echo level1_file1 > dir_level1/file1
localadmin@astra:~$ echo level1_file2 > dir_level1/file2
localadmin@astra:~$ echo level2_file1 > dir_level1/dir_level2/file1
localadmin@astra:~$ echo level2_file2 > dir_level1/dir_level2/file2
localadmin@astra:~/test_compress$ tree
.
├──  dir_level1
│    ├──  dir_level2
│    │   ├── file1
│    │   └── file2
│    ├── file1
│    └── file2
└── file

Выполним команду gzip с ключом -r и увидим, что у всех дочерних файлов появился суффикс .gz, который указывает на то, что они были сжаты.

localadmin@astra:~/test_compress$ gzip -r dir_level1
localadmin@astra:~/test_compress$ tree
 .
├──  dir_level1
│    ├──  dir_level2
│    │   ├──  file1.gz
│    │   └──  file2.gz
│    ├──  file1.gz
│    └──  file2.gz
└── file

Для декомпрессии дочерних файлов можно воспользоваться утилитой gzip с ключами -rd, но проще вызвать Bash-скрипт gunzip с одним ключом -r, так как скрипт под капотом вызовет утилиту gzip с ключом -d и добавит к списку опций ключ -r:

localadmin@astra:~/test_compress$ gunzip -r dir_level1
localadmin@astra:~/test_compress$ tree
.
├──  dir_level1
│    ├──  dir_level2
│    │   ├── file1
│    │   └── file2
│    ├── file1
│    └── file2
└── file

Пример 5. Выполним архивацию/декомпрессию данных с использованием потоков.

Сначала сожмем файл /var/log/auth.log с отправкой результатов в стандартный поток вывода, который далее перенаправим в файл auth-2024-05-27.gz:

localadmin@astra:~/test_compress$ sudo gzip --stdout /var/log/auth.log > auth-2024-05-27.gz
localadmin@astra:~/test_compress$ file auth-2024-05-27.gz
auth-2024-05-27.gz: gzip compressed data, last modified: Mon May 27 13:58:12 2024, from Unix,
original size 20249

Теперь выполним декомпрессию с отправкой результатов в стандартный поток вывода. В нашем случае мы выводим поток на экран, но его можно перенаправить на вход какой-нибудь утилиты, например, less или grep. Таким образом, параметры --stdout и --decompress работают как cat, только применительно к сжатым файлам.

localadmin@astra:~/test_compress$ gzip --stdout --decompress auth-2024-05-27.gz
...
May 27 12:50:11 astra sudo[1520]: pam_unix(sudo:session): session opened for user root by
localadmin(uid=0)
May 27 12:50:13 astra sudo[1520]: pam_unix(sudo:session): session closed for user root
...

Собственно, по этой причине и был создан вспомогательный Bash-скрипт zcat, который под капотом вызывает gzip с ключами -cd:

localadmin@astra:~/test_compress$ zcat auth-2024-05-27.gz
...
May 27 12:50:11 astra sudo[1520]: pam_unix(sudo:session): session opened for user root by
localadmin(uid=0)
May 27 12:50:13 astra sudo[1520]: pam_unix(sudo:session): session closed for user root
...

Утилиты bzip2 и xz

В Linux стараются не изобретать велосипеды, которых и без того хватает, поэтому все архиваторы, разработанные после утилиты gzip, заимствуют ее набор ключей, да и она сама старается не отставать и перенимает полезные новинки у «коллег». В соответствии с той же логикой разработчики альтернативных алгоритмов предлагают аналоги команд gunzip и zcat — для популярных типов архивов они называются bunzip2, bzcat, unxz и xzcat соответственно.

Учитывая вышесказанное, для изменения алгоритма сжатия в большинстве случаев достаточно поменять только название команды, и
результат останется прежним. Если же что-то пойдет не по плану, то открывайте мануал и проверяйте синтаксис.

Пример 1. В качестве практики предлагаем выполнить сравнение технических характеристик алгоритмов сжатия. Начнем с подготовки файлов для демонстрации.

localadmin@astra:~/test_compress$ cp file file_bz
localadmin@astra:~/test_compress$ cp file file_gz
localadmin@astra:~/test_compress$ cp file file_xz
localadmin@astra:~/test_compress$ ls -l
итого 2364
drwxr-xr-x 3 localadmin localadmin   4096 авг  3 11:09  dir_level1
-rw-r--r-- 1 localadmin localadmin    140 авг  3 11:13  dir_level1_recourcive.gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3 11:26 file
-rw-r--r-- 1 localadmin localadmin 599994 авг  3 11:34 file_bz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3 11:35 file_gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3 11:35 file_xz

Выполним сжатие файлов file_bz, file_gz и file_xz соответствующими утилитами, оценим время выполнения (используя утилиту time) и размер сжатых файлов ls -l. Как видите, утилита gzip оказалась быстрее xz примерно в 5 раз, но уровень сжатия утилиты xz в 30 раз выше.

localadmin@astra:~/test_compress$ time gzip file_gz
real    0m0,115s
user    0m0,094s
sys     0m0,016s

localadmin@astra:~/test_compress$ time bzip2 file_bz
real    0m0,127s
user    0m0,114s
sys     0m0,009s

localadmin@astra:~/test_compress$ time xz file_xz
real    0m0,600s
user    0m0,567s
sys     0m0,017s

localadmin@astra:~/test_compress$ ls -l
итого 896
drwxr-xr-x 3 localadmin localadmin   4096 авг  3 11:09 dir_level1
-rw-r--r-- 1 localadmin localadmin     36 авг  3 11:16 dir_levelevel1_file
-rw-r--r-- 1 localadmin localadmin    140 авг  3 11:13 dir_level1_recourcive.gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3 11:26 file
-rw-r--r-- 1 localadmin localadmin  80831 авг  3 11:34 file_bz.bz2
-rw-r--r-- 1 localadmin localadmin 212174 авг  3 11:35 file_gz.gz
-rw-r--r-- 1 localadmin localadmin   6824 авг  3 11:35 file_xz.xz

Архивирование и сжатие в стиле Windows утилитами zip и 7z

Мы уже знаем, что в Linux архивирование и сжатие файлов – это две разные процедуры, а в Windows популярность приобрели форматы, которые действуют по принципу «all inclusive».

С момента реализации «сжатых папок» в 2000 году фактическим стандартом для Windows стал формат Zip, но сообщество продолжало активно пользоваться в том числе форматами RAR и 7z, которые предлагали более продвинутые алгоритмы сжатия, что очень ценилось во времена дискеток на 1.5 МБ. Но все эти форматы объединяет одно — они поддерживают одновременно и архивирование, и сжатие, не прибегая к помощи сторонних инструментов.

При портировании Zip и 7z на Linux разработчики не стали менять логику работы утилит, поэтому они так и остались «двое из ларца» и не могут использоваться для сжатия тарболов. Вернее, положить tar-файл внутрь zip-архива можно без проблем, но для того чтобы заглянуть внутрь этого тарбола, вам потребуется сначала выполнить полную декомпрессию zip-архива.

И в завершение осталось только добавить, что подходы, закрепившиеся в Windows, действительно оказались намного удобнее, поэтому даже в утилиту tar встроили возможность создания сжатых архивов в одно действие:

  • Ключ -z (--gzip) – задействовать утилиту gzip для сжатия/декомпрессии данных.

  • Ключ -j (--bzip2) – задействовать утилиту bzip2 для сжатия/декомпрессии данных.

  • Ключ -J (--xz) – задействовать утилиту xz для сжатия/декомпрессии данных.

Примечание

Кстати, интересные факты…

  1. Название Zip не является аббревиатурой. Это просто английское слово, которое переводится как «двигаться с высокой скоростью». Разработчики хотели подчеркнуть, что их продукт был намного быстрее аналогов того времени.

  2. Название 7z является сокращением от 7-Zip, а еще ранее это приложение называлось 777, где 7 по заявлению автора – это просто цифра, которая была добавлена для того, чтобы приложение находилось выше других в сортированных списках. Но любители НЛО говорят, что это все неспроста, и цифра 7 подозрительно совпадает с телефонным кодом России, ведь создателем этого формата является российский программист Игорь Павлов.

  3. Название RAR является аббревиатурой и образовано от Roshal ARchiver. Создателем этого формата является еще один российский программист Евгений Рошал.

Мы не станем расписывать параметры вызова этих утилит, так как для zip в большинстве случаев будет достаточно команд zip/unzip, а для 7z — ключей a (append) и d (decompress) соответственно. Поэтому рассмотрим только несколько наиболее частых и полезных примеров.

Пример 1. Выполним архивирование и сжатие группы файлов с помощью утилиты zip:

localadmin@astra:~/test_compress$ zip file_archive.zip file_{gz,bz,xz}
 adding: file_gz (deflated 65%)
 adding: file_bz (deflated 65%)
 adding: file_xz (deflated 65%)
localadmin@astra:~/test_compress$ ls -l
итого 2988
drwxr-xr-x 3 localadmin localadmin   4096 авг  3  2023 dir_level1
-rw-r--r-- 1 localadmin localadmin    140 авг  3  2023 dir_level1_recourcive.gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file
-rw-r--r-- 1 localadmin localadmin 636892 авг  3  2023 file_archive.zip
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file_bz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file_gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file_xz

Пример 2. Выполним восстановление файлов из архива. Для этого воспользуемся утилитой unzip:

localadmin@astra:~/test_compress$ unzip file_archive.zip
Archive:  file_archive.zip
replace file_gz? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
 inflating: file_gz
 inflating: file_bz
 inflating: file_xz
localadmin@astra:~/test_compress$ ls -l
итого 2984
drwxr-xr-x 3 localadmin localadmin   4096 авг  3  2023 dir_level1
-rw-r--r-- 1 localadmin localadmin    140 авг  3  2023 dir_level1_recourcive.gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file
-rw-r--r-- 1 localadmin localadmin 636892 авг  3  2023 file_archive.zip
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file_bz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file_gz
-rw-r--r-- 1 localadmin localadmin 599994 авг  3  2023 file_xz

Пример 3. Посмотрим содержимое архива с помощью ключа -l (строчная L, от слова list):

localadmin@astra:~/test_compress$ unzip -l file_archive.zip
Archive: file_archive.zip
Length Date Time Name
--------- ---------- ----- ----
599994 2023-08-03 11:35 file_gz
599994 2023-08-03 11:34 file_bz
599994 2023-08-03 11:35 file_xz
--------- -------
1799982 3 files

Пример 4. Выполним декомпрессию данных в стандартный поток вывода, т.е. на экран, с помощью ключа -p (pipe) команды unzip:

localadmin@astra:~$ sudo zip auth-2024-05-27.zip /var/log/auth.log
  adding: var/log/auth.log (deflated 16%)
localadmin@astra:~$ unzip -p auth-2024-05-27.zip
...
May 27 12:50:11 astra sudo[1520]: pam_unix(sudo:session): session opened for user root by
localadmin(uid=0)
May 27 12:50:13 astra sudo[1520]: pam_unix(sudo:session): session closed for user root
...

Пример 5. Выполним архивирование и сжатие с помощью утилиты tar в одно действие. Для этого воспользуемся ключом -z:

localadmin@astra:~$ sudo tar -czvf varfiles.tar.gz /var
...
/var/tmp/systemd-private-8cf669c8df1b48ba930a14a57441c918-upower.service-WFWd8H/
/var/tmp/systemd-private-8cf669c8df1b48ba930a14a57441c918-upower.service-WFWd8H/tmp/
/var/local/
/var/run
/var/mail/
localadmin@astra:~$

И тут же проведем обратную процедуру:

localadmin@astra:~$ tar -xzvf varfiles.tar.gz
...
/var/tmp/systemd-private-8cf669c8df1b48ba930a14a57441c918-upower.service-WFWd8H/
/var/tmp/systemd-private-8cf669c8df1b48ba930a14a57441c918-upower.service-WFWd8H/tmp/
/var/local/
/var/run
/var/mail/

localadmin@astra:~$ ls -l | grep var
drwxr-xr-x 12 localadmin localadmin 4096 мая 16 2023 var
-rw-r--r-- 1 root root 66761786 июн 4 06:44 varfiles.tar.gz

Практика и тестирование

  • Практическая работа: Модуль 14. Архивирование и сжатие информации
  • Тест: Модуль 14. Архивирование и сжатие информации

Заключение

В этом модуле мы разобрались, как работать с архивированием и сжатием данных в Linux и почему для Windows-администраторов эти понятия являются синонимами. Граница между мирами, конечно, сильно истончается, поэтому мы уже видим, как zip и 7z портируют в Linux, а традиционно никсовые форматы наравне с rar и 7z включаются в нативную поддержку сжатых папок Windows (в том числе .tar, .tar.gz, .tar.bz2 и .tar.xz). Однако понимание концептуальных различий между форматами поможет вам уверенно
использовать эти технологии в своей работе.

В следующем модуле мы познакомимся с крайне непростой темой – управлением программным обеспечением в Linux. Тут-то нам и пригодятся знания текущего модуля, потому как deb-пакеты, используемые для установки программ в производных от Debian системах, представляют собой не что иное, как специализированные архивы.

Дополнительные источники информации

  • Формат tar (wikipedia)

  • Формат Gzip (wikipedia)

  • Список архивов и архиваторов (wikipedia)

  • Comparison of file archivers (wikipedia)

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как запустить windows на навигаторе
  • Постоянно включается защита в реальном времени windows 10
  • Как изменить порт postgresql windows
  • Программы для нового компьютера windows 11
  • Windows 11 version 22h2 что нового