Полезная команда 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. Пожалуйста, поделитесь своими отзывами и комментариями.