- Использование tar в Linux и FreeBSD для работы с архивами
- Создание и распаковка архивов
- Создать
- Распаковать
- Примеры
- Распаковать в определенную папку
- Распаковка без вложенной папки
- Исключение файлов по маске
- Работа с архивами, разбитыми на части
- Описание ключей tar
- Команды для действия
- Дополнительные опции
- Windows
- How to extract tar.xz files in Linux and unzip all files
- How do I extract tar.xz files in Linux?
- Installation
- Debin/Ubuntu Linux install xz
- CentOS/RHEL/Fedora Linux install xz
- Installing xz on OpenSUSE/SUSE Enterprise Linux
- Examples
- Extracting specific files from a tar.xz file
- Understanding tar command options
- How to extract .xz files using the xz command
- Decompress .tar.xz file
- Compress tarball as .tar.xz file
- Compress from stdin
- Conclusion
Использование tar в Linux и FreeBSD для работы с архивами
Утилита командной строки tar используется для работы с архивами в операционных системах на базе UNIX. С ее помощью можно архивировать данные и оптимизировать использование дискового пространства.
Создание и распаковка архивов
Создать
Создание выполняется с ключом c. Синтаксис следующий:
tar -czvf archive.tar.gz /home/dmosk
* в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk)
** где z — сжать архив в gzip (без этого параметра, tar не сжимает, а создает так называемый тарбол); c — ключ на создание архива; v — verbose режим, то есть с выводом на экран процесса (очень удобно для наблюдением за ходом работы, но в скриптах можно упустить); f — использовать файл (обязательно указываем, так как в большей степени работаем именно с файлами).
Распаковать
Распаковка выполняется с ключом x с синтаксисом:
tar -xvf archive.tar.gz
Примеры
Распаковка .gz файла:
tar -xvf archive.tar.gz
* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.
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
tar -xvzf archive.tar.gzip
* ключ z отвечает за работу с gzip.
Распаковывается, как gzip:
tar -xvzf archive.tgz
Распаковать в определенную папку
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 пропустит одну вложенную папку внутри архива.
Исключение файлов по маске
Если необходимо пропустить некоторые файлы, вводим команду с ключом —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 Мб.
В итоге мы получим, примерно, такую картину:
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
Описание ключей tar
Команды для действия
Ключ | Описание |
---|---|
-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 не работает с zip-архивами. В системах UNIX для этого используем утилиты zip и unzip. Для начала, ставим нужные пакеты:
yum install zip unzip
apt-get install zip unzip
pkg install zip unzip
* соответственно, для RPM based, deb based, BSD based.
zip -r archive.zip /home/dmosk
* создает архив каталога /home/dmosk в файл archive.zip.
Windows
В системе на базе Windows встроенными средствами можно распаковать только ZIP-архивы. Для работы с разными архивами рекомендуется поставить архиватор, например 7-Zip.
Источник
How to extract tar.xz files in Linux and unzip all files
H ow do I extract tar.xz files in Linux? Can you tell me command to unzip linux-5.6.13.tar.xz file? How can I uncompressing (or decompressing) all files in the current directory?
The tar command and xz command provides support for extracting and uncompressing tar.xz files and .txz archives under Linux operating systems.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | tar and xz commands on Linux |
Est. reading time | 6 minutes |
How do I extract tar.xz files in Linux?
- Install xz using the dnf install xz on a CentOS/RHEL/Fedora Linux.
- Debian/Ubuntu Linux users try apt install xz-utils command.
- Extract tar.xz using the tar -xf backup.tar.xz command
- To decompress filename.tar.xz file run: xz -d -v filename.tar.xz
Installation
XZ is a set of open-source software for lossless data compressors, including LZMA and xz formats. These formats are popular among open source developers and projects due to higher compression rates than alternatives tools like gzip and bzip2. The tar command works if xz installed on the system. Hence, we must install it.
Debin/Ubuntu Linux install xz
Use the apt command/apt-get command:
$ sudo apt install xz-utils
Sample outputs:
CentOS/RHEL/Fedora Linux install xz
Open the terminal app and then run NA command/dnf command as follows:
$ sudo dnf install xz
## On an older version of CentOS/RHEL try yum ##
$ sudo yum install xz
From my CentOS 6.x box:
Installing xz on OpenSUSE/SUSE Enterprise Linux
We can use the zypper command to install xz:
$ sudo zypper install xz
OpenSUSE installing xz package for extraction purposes
Examples
Now we install xz. We can now directly use the tar command as follows for extracting a file named linux-5.6.13.tar.xz:
$ tar -xf linux-5.6.13.tar.xz
$ tar -xvf linux-5.6.13.tar.xz
$ tar -Jxvf linux-5.6.13.tar.xz
## extract tar.xz files aka .txz file ##
$ tar —xz -xf archive.txz
Extracting specific files from a tar.xz file
We extract a given file names from a backup.tar.xz file by using the following syntax:
$ tar -xf backup.tar.xz resume.pdf
$ tar -xf backup.tar.xz babys-3rd-cake-day.jpg sales.txt
Sometimes we don’t know file names in advance. Hence, we list the contents of an archive by passing the -t as follows and then unzip tar.xz files:
$ tar -tvf backup.tar.xz
## filter out tar listing option using the grep command/egrep command ##
$ tar -tvf backup.tar.xz | grep file1
$ tar -tvf backup.tar.xz | egrep ‘ file.txt | data.doc | cake.jpg ‘
Want to extract all Perl or Python source code files? Try the following option:
$ tar —wildcards ‘*.py’ -xvf webroot.tar.xz
$ tar —wildcards ‘*.pl’ -xvf centos-7-sysadmin-scripts.txz
Understanding tar command options
- -x : Extract/get/unzip files from an archive.
- -f archive.tar.xz : Use this archive file or device archive for extracting files
- -J OR —xz : Filter the archive through xz command. Hence, we install xz using package manager.
- -v : Verbose. Show progress.
- -t : List file stored inside .tar.xz/.xz archive.
- —wildcards : By default, wildcards don’t work as they treated or processed to by your current shell. Therefore, to extract files, use the —wildcards options. For example, extract all .webp images I would pass —wildcards ‘*.webp’ option to the tar.
How to extract .xz files using the xz command
So far, we learned to use tar for extracting. But, we can use xz command directly for as compressor and decompressor too. Tar internally calls xz itself or using API provided by libs. Let us see some tips and tricks for xz command.
Decompress .tar.xz file
$ xz —decompress filename.tar.xz
$ xz -v -d archives.tar.xz
Decompress file named mysql.sql.xz and replaced by mysql.sql:
$ xz -v -d mysql.sql.xz
Compress tarball as .tar.xz file
Compress a file named mysql.sql and replace it by mysql.sql.xz for saving disk space:
$ xz mysql.sql
The syntax is as follows for compressing per-existing tarball:
$ xz -v -z filename.tar
Alternatively, use the tar command for convenience purposes
$ tar -cv J f
$ tar -cv J f
$ sudo tar -cv J f /efs/backups/14-05-2020/production-webroot.tar.xz /var/www/
$ sudo tar —xz -cvf /efs/backups/aws-us-west-www-prod-42-etc.txz /etc/
Gif 01. xz in action
Compress from stdin
$ mysqldump nixcraft-blog | xz > nixcraft-blog.sql.xz
Of coruse we can uncompress and send content to stdout for the mysql command too
$ xzcat nixcraft-blog.sql.xz | mysql nixcraft-blog
Let us uncompress tar directory from stdin sent from the nc, enter (assuming that target server-ip protected by VPN else use the ssh command):
$ nc -l -p 4242 | tar -xJvf —
On other side compress directory to stdout and send to the nc, run:
$ tar -cJvz — /var/www/html | nc server-ip-here 4242
Our final example use ssh instead of nc:
$ tar —xz -cf — /path/to/dir | ssh vivek@server1.cyberciti.biz «cat > filename.txz»
See “How To Use tar Command Through Network Over SSH Session” for more info.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Conclusion
This quick tutorial explained how to extract and unzip popular archive formats such as .tar.xz and .txz under Linux operating systems. Remember, tar command only works if you install the xz command via the package manager. See the xz project home page and docs here.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник