Полезная команда Tar с практическими примерами в Linux

Полезная команда Tar с практическими примерами в Linux

 

Tar — это наиболее широко используемая команда в Unix и Linux подобных операционных системах для создания архива из нескольких файлов и папок в один архивный файл, и этот архивный файл может быть дополнительно сжат с использованием методов  gzip и bzip2 . Другими словами, мы можем сказать, что команда tar используется для резервного копирования путем архивирования нескольких файлов и каталогов в один файл tar или архива, а позже файлы и каталоги могут быть извлечены из сжатого файла tar.

В этой статье мы обсудим команду Linux tar с 17 полезными примерами.

Синтаксис команды tar:

# tar <options> <files>

Некоторые из наиболее часто используемых параметров в команде tar перечислены ниже:

 

Примечание: дефис (-) в параметрах команды tar указывать не обязательно.

Пример 1) Создание файла архива tar

Создадим tar-файл в каталоге / etc и файл / root / anaconda-ks.cfg.

[ ~]# tar -cvf myarchive.tar /etc /root/anaconda-ks.cfg

Вышеупомянутая команда создаст tar-файл с именем « myarchive » в текущей папке. Файл tar содержит все файлы и каталоги папки / etc и файла anaconda-ks.cfg .

В команде tar параметр ‘ -c ‘ указывает для создания файла tar, ‘ -v’ используется для подробного вывода, а параметр ‘ -f’ используется для указания имени файла архива.

[ ~]# ls -l myarchive.tar
-rw-r--r--. 1 root root 22947840 Sep 7 00:24 myarchive.tar
[ ~]#

Пример 2) Список содержимого архивного файла

Используя параметр « –t » в команде tar, мы можем просматривать содержимое файлов tar, не распаковывая его.

[ ~]# tar -tvf myarchive.tar

Вывод определенного файла или каталога из tar-файла. В приведенном ниже примере я пытаюсь проверить, есть ли файл anaconda-ks.cfg в файле tar или нет.

[ ~]# tar -tvf myarchive.tar root/anaconda-ks.cfg
-rw------- root/root 953 2016-08-24 01:33 root/anaconda-ks.cfg
[ ~]#

Пример 3) Добавить или добавить файлы в конец архива

Параметр ‘ -r ‘ в команде tar используется для добавления или добавления файла к существующему файлу tar. Давайте добавим / и т.д. / Fstab файл в « data.tar »

[ ~]# tar -rvf data.tar /etc/fstab

Примечание. В сжатый файл tar мы не можем добавить файл или каталог.

Пример 4) Извлечь файлы и каталоги из файла архива

Параметр ‘ -x ‘ используется для извлечения файлов и каталогов из файла архива tar. Давайте извлечем содержимое созданного выше tar-файла.

[ ~]# tar -xvf myarchive.tar

Вышеупомянутая команда извлечет все файлы и каталоги tar-файла myarchive в текущий рабочий каталог.

Пример 5) Извлечь файл архива tar в определенную папку

Если вы хотите извлечь tar-файл в определенную папку или каталог, используйте опцию « -C », за которой следует путь к папке. Пример показан ниже

[ ~]# tar -xvf myarchive.tar -C /tmp/

Пример 6) Извлечь конкретный файл или каталог из tar-файла

Предположим, вы хотите извлечь только файл anaconda-ks.cfg из файла tar в папке / tmp.

Синтаксис:

# tar –xvf {tar-file } {file-to-be-extracted } -C {path-where-to-extract}

[ tmp]# tar -xvf /root/myarchive.tar root/anaconda-ks.cfg -C /tmp/
root/anaconda-ks.cfg
[ tmp]# ls -l /tmp/root/anaconda-ks.cfg
-rw-------. 1 root root 953 Aug 24 01:33 /tmp/root/anaconda-ks.cfg
[ tmp]#

Пример 7) Создать и сжать архивный файл (gzip)

Предположим, мы хотим создать tar-файл в папке /etc и /opt, а также хотим сжать его с помощью инструмента gzip. Этого можно добиться с помощью опции -z в команде tar. Расширения таких файлов tar будут tar.gz или .tgz.

[ ~]# tar -zcpvf myarchive.tar.gz /etc/ /opt/
или
[ ~]# tar -zcpvf myarchive.tgz /etc/ /opt/

Пример 8) Создать и сжать архивный файл (bzip2)

Предположим, что мы хотим создать сжатый (bzip2) tar-файл из папки / etc и / opt. Этого можно добиться с помощью параметра ( -j ) в команде tar. Расширения таких файлов tar будут tar.bz2 или .tbz.

[~]# tar -jcpvf myarchive.tar.bz2 /etc/ /opt/
Или
[ ~]# tar -jcpvf myarchive.tbz2 /etc/ /opt/

Пример 9) Исключение определенных файлов или типов при создании tar-файла

Используя опцию «- exclude » в команде tar, мы можем исключить конкретный файл или тип файла при создании файла tar. Предположим, мы хотим исключить тип файла html при создании сжатого файла tar.

[ ~]# tar -zcpvf myarchive.tgz /etc/ /opt/ --exclude=*.html

Пример 10) Список содержимого файла tar.gz или .tgz

Содержимое tar-файла с расширениями tar.gz или .tgz просматривается с помощью опции ‘ -t ‘. Пример показан ниже:

[ ~]# tar -tvf myarchive.tgz  | more 
............................................. 
drwxr-xr-x root/root         0 2016-09-07 08:41 etc/ 
-rw-r--r-- root/root       541 2016-08-24 01:23 etc/fstab 
-rw------- root/root         0 2016-08-24 01:23 etc/crypttab 
lrwxrwxrwx root/root         0 2016-08-24 01:23 etc/mtab -> /proc/self/mounts 
-rw-r--r-- root/root       149 2016-09-07 08:41 etc/resolv.conf 
drwxr-xr-x root/root         0 2016-09-06 03:55 etc/pki/ 
drwxr-xr-x root/root         0 2016-09-06 03:15 etc/pki/rpm-gpg/ 
..........................................................

Пример 11) Список содержимого файла tar.bz2 или .tbz2

Содержимое tar-файла с расширениями .bz2 или .tbz2 просматривается с помощью опции ‘-t’. Пример показан ниже:

[ ~]# tar -tvf myarchive.tbz2  | more 
........................................................ 
rwxr-xr-x root/root         0 2016-08-24 01:25 etc/pki/java/ 
drwxr-xr-x root/root         0 2016-09-06 02:54 etc/pki/nssdb/ 
-rw-r--r-- root/root     65536 2010-01-12 15:09 etc/pki/nssdb/cert8.db 
-rw-r--r-- root/root      9216 2016-09-06 02:54 etc/pki/nssdb/cert9.db 
-rw-r--r-- root/root     16384 2010-01-12 16:21 etc/pki/nssdb/key3.db 
-rw-r--r-- root/root     11264 2016-09-06 02:54 etc/pki/nssdb/key4.db 
-rw-r--r-- root/root       451 2015-10-21 09:42 etc/pki/nssdb/pkcs11.txt 
-rw-r--r-- root/root     16384 2010-01-12 15:45 etc/pki/nssdb/secmod.db 
drwxr-xr-x root/root         0 2016-08-24 01:26 etc/pki/CA/ 
drwxr-xr-x root/root         0 2015-06-29 08:48 etc/pki/CA/certs/ 
drwxr-xr-x root/root         0 2015-06-29 08:48 etc/pki/CA/crl/ 
drwxr-xr-x root/root         0 2015-06-29 08:48 etc/pki/CA/newcerts/ 
drwx------ root/root         0 2015-06-29 08:48 etc/pki/CA/private/ 
drwx------ root/root         0 2015-11-20 06:34 etc/pki/rsyslog/ 
drwxr-xr-x root/root         0 2016-09-06 03:44 etc/pki/pulp/ 
..............................................................

Пример 12) Извлечь сжатый архивный файл (tar.gz или .tgz)

tar-файлы с расширением tar.gz или .tgz извлекаются или распаковываются с опциями ‘- x ‘ и ‘- z ‘. Пример показан ниже:

[ ~]# tar -zxpvf myarchive.tgz -C /tmp/

Вышеупомянутая команда извлечет файл tar в папку / tmp.

Примечание. Теперь команда days tar будет автоматически выполнять сжатие типов файлов при извлечении, это означает, что нам необязательно указывать тип сжатия в команде tar. Пример показан ниже:

[ ~]# tar -xpvf myarchive.tgz -C /tmp/

Пример 13) Распакуйте или разархивируйте файлы tar.bz2 или .tbz2

tar-файлы с расширением tar.bz2 или .tbz2 извлекаются с опциями ‘ -j ‘ и ‘ -x ‘. Пример показан ниже:

[ ~]# tar -jxpvf myarchive.tbz2 -C /tmp/

Или

[ ~]# tar xpvf myarchive.tbz2 -C /tmp/

Пример 14) Планирование резервного копирования с помощью команды tar

Есть несколько сценариев в реальном времени, когда мы должны ежедневно создавать tar-файлы определенных файлов и каталогов для резервного копирования. Предположим, нам нужно делать резервную копию всей папки / opt ежедневно, это может быть достигнуто путем создания задания cron для команды tar. Пример показан ниже:

[ ~]# tar -zcvf optbackup-$(date +%Y-%m-%d).tgz /opt/

Создайте задание cron для указанной выше команды.

Пример 15) Создание и сжатый архивный файл с опциями -T и -X

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

В команде tar входной файл указывается после опции ‘ -T ‘, а файл, который состоит из списка исключений, указывается после опции ‘ -X ‘.

Предположим, мы хотим заархивировать и сжать каталоги, такие как /etc /opt и /home, и хотим исключить файлы ‘ /etc/sysconfig/kdump’ и ‘ /etc/sysconfig/foreman’. Создайте текстовый файл ‘/root/tar-include ‘и’ /root/tar-exclude ‘и поместите следующее содержимое в соответствующий файл.

[ ~]# cat /root/tar-include
/etc
/opt
/home
[ ~]#
[ ~]# cat /root/tar-exclude
/etc/sysconfig/kdump
/etc/sysconfig/foreman
[ ~]#

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

# tar zcpvf mybackup-$(date +%Y-%m-%d).tgz -T /root/tar-include -X /root/tar-exclude

Пример 16) Просмотр размера файлов .tar, .tgz и .tbz2

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

[ ~]# tar -czf - data.tar | wc -c
427
[ ~]# tar -czf - mybackup-2016-09-09.tgz | wc -c
37956009
[ ~]# tar -czf - myarchive.tbz2 | wc -c
30835317
[ ~]#

Пример 17) Разделение большого файла tar на файлы меньшего размера

В Linux, как и в операционной системе, большой файл разделяется или разбивается на более мелкие файлы с помощью команды split . Большой tar-файл также можно разделить на более мелкие части с помощью команды split.

Предположим, мы хотим разделить файл mybackup-2016-09-09.tgz на более мелкие части по 6 МБ.

Синтаксис : split -b <Size-in-MB> <tar-file-name>.<extension> “prefix-name”

[ ~]# split -b 6M mybackup-2016-09-09.tgz mybackup-parts

Приведенная выше команда разделит сжатый tar-файл mybackup на файлы меньшего размера, каждый размером 6 МБ в текущем рабочем каталоге, а имена разделенных файлов будут начинаться с mybackup-partsaa… mybackup-partsag . В случае, если вы хотите добавить числа вместо алфавитов, используйте опцию ‘-d’ в приведенной выше команде разделения.

[ ~]# ls -l mybackup-parts*
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsaa
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsab
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsac
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsad
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsae
-rw-r--r--. 1 root root 6291456 Sep 10 03:05 mybackup-partsaf
-rw-r--r--. 1 root root 637219  Sep 10 03:05 mybackup-partsag
[ ~]#

Теперь мы можем переместить эти файлы на другой сервер по сети, а затем объединить все файлы в один сжатый tar-файл, используя указанную ниже команду.

[ ~]# cat mybackup-partsa* > mybackup-2016-09-09.tgz
[ ~]#

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