Архіватор tar у Linux: як працює класичний інструмент зберігання файлів

12.12.2025 3 хвилин Автор: Lady Liberty

Архіватор tar залишається одним із базових інструментів у Linux та інших Unix-подібних системах. У цій статті розглядається принцип роботи tar, логіка створення архівів і особливості взаємодії з файловою системою. Матеріал допоможе зрозуміти, чому tar вважається стандартом у Linux-середовищі та в яких сценаріях він залишається незамінним інструментом для роботи з даними.

Що таке tar і навіщо він досі потрібен у сучасних Linux-системах

Утиліта tar спочатку використовувалася для створення архівів на магнітній стрічці ( tar – ta pe a r chive). В даний час tar використовується для створення архівів на будь-яких носіях і практично є основним засобом зберігання файлів і каталогів в одному файлі спеціального формату. Головною перевагою формату tar є те, що архів містить не тільки самі дані файлів, що архівуються, але і інформацію про структуру каталогів, власника, і тимчасові мітки (час створення, модифікації, доступу). Архіватор tar не виконує стиснення даних, що архівуються, він всього лише упаковує безліч файлів в один файл, розмір якого приблизно дорівнює сумарному розміру упакованих файлів (трохи більше за рахунок додавання власних службових заголовків). Для стиснення ж, використовуються зовнішні програми ( gzip, bzip2 і т.п. )

Для отримання підказки щодо використання tar достатньо викликати вбудовану довідку. Вона виводить короткий опис призначення програми та основні параметри командного рядка.

tar –help

У відповідь буде показано базовий синтаксис використання утиліти та підказки для відновлення окремих файлів із архіву.

Використання: tar [ПАРАМЕТР...] [Файл] на файл . для відновлення окремих файлів із архіву.

Приклади базового використання

Найпростіші команди дозволяють швидко створювати архіви, переглядати їх вміст або розпаковувати файли.

tar -cf archive.tar foo bar

Ця команда створює файл archive.tar, що містить файли foo і bar.

tar -tvf archive.tar

Виводить детальний список усіх файлів і каталогів, що зберігаються в архіві.

tar -xf archive.tar

Вилучає всі файли з архіву archive.tar у поточний каталог.

Основні режими роботи

Робота з архівами в tar будується навколо кількох ключових режимів. Саме вони визначають, що саме буде зроблено з архівом — створення, перегляд чи вилучення.

  • -c, –create — створення нового архіву

  • -t — перегляд вмісту архіву

  • -x, –extract, –get — вилучення файлів з архіву

  • -r, –append — додавання файлів

  • -u, –update — додавання тільки нових файлів

  • -A, –catenate, –concatenate — приєднання tar-файлів до архіву

Цих режимів зазвичай достатньо для більшості повсякденних задач.

Інкрементне архівування та модифікатори

Для резервного копіювання tar підтримує інкрементний режим, який дозволяє зберігати лише ті файли, що змінилися з моменту попереднього архівування. Це особливо зручно для регулярних бекапів.

  • -g, –listed-incremental=ФАЙЛ — інкрементне резервування нового формату GNU

  • -G, –incremental — інкрементне резервування старого формату

  • –check-device / –no-check-device — контроль номерів пристроїв

  • –ignore-failed-read — не зупиняти роботу при помилках читання

Також доступні опції для роботи з розрідженими файлами та повторюваними входженнями:

  • -S, –sparse

  • –sparse-version=MAJOR[.MINOR]

  • –occurrence[=N]

Керування перезаписом файлів

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

  • -k, –keep-old-files — не перезаписувати існуючі файли

  • –overwrite / –overwrite-dir — примусовий перезапис

  • –no-overwrite-dir — збереження метаданих каталогів

  • -U, –unlink-first — видаляти файл перед вилученням

  • -W, –verify — перевірка архіву після запису

Потоки виводу та атрибути файлів

За потреби результати роботи можна перенаправляти або змінювати поведінку збереження атрибутів.

  • -O, –to-stdout — виведення файлів у стандартний потік

  • –to-command=КОМАНДА — передача файлів іншій програмі

  • –atime-preserve — збереження часу доступу

  • –numeric-owner — використання числових UID/GID

  • –no-same-owner / –no-same-permissions — керування правами доступу

Формати архівів і стиснення

tar підтримує кілька стандартних форматів архівів і може працювати разом із зовнішніми програмами стиснення.

Формати архіву:

  • gnu

  • pax (POSIX)

  • ustar

  • v7

Опції стиснення:

  • -a, –auto-compress — автоматичне визначення типу

  • -z, –gzip

  • -j, –bzip2

  • –lzma, –lzip

Для отримання короткої довідки щодо використання tar введіть команду:

tar –usage

При виконанні цієї команди, відображаються варіанти використання параметрів командного рядка без будь-яких пояснень:

Використання: tar [-AcdrtuxGnSkUWOmpsMBiajJzZhPlRvwo?]
[-g ФАЙЛ] [-g ФАЙЛ] [-g [-b БЛОКИ]
[-H ФОРМАТ] [-V ТЕКСТ] [-I ПРОГ]
[-C КАТАЛОГ] [-K ІМ'Я-ЧЛЕНА]
[-N ДАТА-АБО-ФАЙЛ] [-T ФАЙЛ
] [-X ФАЙЛ] [--catenate] [--concatenate]
[--create] [--append] [--list] [--test-label] [--update]
[--extract] [--get] [--check-device]
[--listed-incremental=ФАЙЛ] [--incremental]
[--ignore-failed-read] [--level=N] [--seek]
[--no- [--occurrence[=N]] [--sparse-version=MAJOR[.MINOR]]
[--sparse] [--keep-old-files] [--keep-newer-files]
[--no-overwrite-dir] [--overwrite] [--overwrite-dir]
[--recurs [--skip-old-files]
[--unlink-first] [--verify] [--ignore-command-error]
[--no-ignore-command-error] [--to-stdout]
[--to-command=КОМАНДА] [--acls]
[--atime-preserve[=СПОСОБ]]
[--group=ІМ'Я] [--mode=РЕЖИМ]
[--mtime=ДАТА-АБО-ФАЙЛ] [--touch] [--no-acls]
[--no-delay-directory-restore] [--no-same-owner]
[--no-same-permissions]
[--no- selinux [--owner=ІМ'Я] [--preserve-permissions]
[--same-permissions] [--preserve] [--same-owner]
[--preserve-order] [--same-order] [--selinux] [--xattrs]
[--file=АРХІВ] [--force-local] [--info-script=ІМ'Я]
[--new-volume-script=ІМ'Я] [--tape-length=N]
[--multi-volu [--rsh-command=КОМАНДА]
[--volno-file=ФАЙЛ] [--blocking-factor=БЛОКИ]
[--read-full-records] [--ignore-zeros] [--record-size=N]
[--format=ФОРМАТ] [--old-archive] [--portability
[--pax-option=keyword[=значення][,keyword[=значення]]...]
[--posix] [--label=ТЕКСТ] [--auto-compress]
[--use-compress-program=ПРОГ] [--bzip2]
[--xz] [--lzip] [--lzma [--gzip] [--gunzip]
[--ungzip] [--compress] [--uncompress] [--add-file=ФАЙЛ]
[--backup[=УПРАВЛІННЯ]] [--directory=КАТАЛОГ]
[--exclude=ШАБЛОН] [
--exclude-backups] [--exclude-ca [--exclude-caches-under]
[--exclude-tag=ФАЙЛ] [--exclude-tag-all=ФАЙЛ]
[--exclude-tag-under=ФАЙЛ] [--exclude-vcs] [--dereference]
[--hard-dereference]
[--starting-file=ІМ'Я-ЧЛЕНА] [-- [--no-recursion]
[--no-unquote] [--null] [--newer=ДАТА-АБО-ФАЙЛ]
[--after-date=ДАТА-АБО-ФАЙЛ] [--one-file-system]
[--absolute-names] [--recursion] [--suffix
=ФРОК] [--exclude-from=ФАЙЛ]
[--strip-components=N] [--transform
=РОЗШИРЕННЯ] [--xform=РОЗШИРЕННЯ] [--anchored] [--ignore-case]
[--no-anchored] [--no-ignore-case] [
--no-wildcard [--wildcards]
[--wildcards-match-slash] [--checkpoint[=N]]
[--checkpoint-action=ДІЯ] [--index-file=ФАЙЛ]
[--check-links] [--no-quote-chars=РЯДОК
] [--quote-chars=РЯДОК
[--block-number] [--show-defaults] [--show-omitted-dirs]
[--show-transformed-names] [--show-stored-names]
[--totals[=СИГНАЛ]] [--utc] [--verbose] [--warning=
KEYWORD [--restrict] [--usage]
[--version] [ФАЙЛ]...

Можна також скористатися вбудованою довідковою системою:

man tar

Приклади використання tar

tar -create -file=archive.tar file1 file2  створити в поточному каталозі архів archive.tar з файлів ffile1 і file2

tar -cf archive.tar file1 file2 – те ж , що і в попередньому прикладі, але з використанням синтаксису коротких опцій (скорочених параметрів командного рядка -c відповідає опцій, їх можна об’єднувати – параметри -c -f файл.tar можна вводити як -cf файл.tar . tar -cvf archive.tar file1 домашнього каталогу користувача user . При використанні даного формату команди, нерідко виникає питання, чому tar не включає в архів приховані файли і каталоги, імена яких починаються з точки . файл або група файлів. Визначенням підходящих під шаблон об’єктів займається сама командна оболонка, в якій виходячи з міркувань безпеки, шаблон ” *” не включає імена файлів, що починаються з точки. tar -zcvf /backup/archive.tar.gz /home/user/ – створити архів усіх файлів домашнього каталогу користувача user з використанням стиснення даних за допомогою gzip tar -jcvf /backup/archive.tar.bz2 /home/user/ – створити архів усіх файлів домашнього каталогу користувача user з використанням стиснення даних /backup/archive.tar.bz2 /home/user/ – створити архів всіх файлів домашнього каталогу користувача user з використанням програми, яка визначається автоматично по імені файлу .

Якщо на ім’я файлу архіву неможливо визначити програму стиснення, то архів створюється, але стиснення не виконується. При розпакуванні архіву параметр -a вказувати не обов’язково, оскільки тип стиснення визначається автоматично у будь-якому випадку:

  • tar -tvf archive.tar – відобразити список файлів і каталогів архіву archive.tar

  • tar -tvf archive.tar > listfiles – те, що й у попередньому прикладі, але з видачею результатів у текстовий файл listfiles

  • tar -xvf archive.tar – розпакувати (розархівувати) в поточний каталог вміст

  • ./backup/archive.tar –C /home2/ – витягти вміст архіву /backup/archive.tar у каталог /home2 .

  • tar –xv –keep-newer-file –f /backup/archive.tar –C /home2 – те саме, що й у попередньому прикладі, тільки перезапис існуючих файлів не буде виконано, якщо вони того ж віку або новіші.

  • tar –xvkf /backup/archive.tar –C /home2 – якщо виймати дані з архіву, буде спроба перезапису існуючого файла, то програма tar завершиться помилкою.

  • tar –exclude=log -zcvf /backup/archive.tar.gz /var/ – при архівуванні виключити файли журналів.

  • tar –exclude-backups –exclude-caches –exclude-tag-all=excludes.txt -zcvf /backup/home.tar.gz /home/ – при архівуванні виключити файли бекапів, кеш і всі каталоги, в яких присутній файл з ім’ям excludes.txt

Утиліта tar дозволяє створювати tar, що містять лише ті файли, які були змінені з моменту повного або додаткового резервного копіювання. У разі використання такого режиму архівування виконується команда tar з параметром –listed-incremental=ФАЙЛ ( -g ФАЙЛ ), де ФАЙЛ вказує на файл метаданих, в якому зберігається інформація про стан інкрементного архіву.

Якщо такого файлу не існує, то при виконанні команди створюється повний архів, а також новий метаданих файл, який буде використовуватися в наступних етапах створення інкрементних резервних копій.

  • tar -zcvf /backup/home.tar.gz –backup=numbered –listed-incremental=/backup/home_meta /home/ – створити інкрементний архів каталогу /home .

Параметр –backup=numbered вказує на те, що потрібно створювати нумеровані резервні копії.

Повний архів, в даному прикладі, буде створений у вигляді файлу з ім’ям home.tar.gz , а наступні інкрементні архіви будуть створюватися з іменами home.tar.gz.~1~ , home.tar.gz.~2~ і т.д.

Для відновлення даних з інкрементного архіву потрібно спочатку розархівувати повний архівний файл, а потім інкрементні:

  • tar -zxvf /backup/home.tar.gz -C /home2 – витягти в каталог /home2 вміст повного архіву.

  • tar -zxvf /backup/home.tar.gz.~1~ -C /home2 – отримати в каталог /home2 вміст першого інкрементного архіву.

  • tar -zxvf /backup/home.tar.gz.~2~ -C /home2 – отримати в каталог /home2 вміст другого інкрементного архіву.

Використання інкрементного архівування в tar дозволяє, наприклад, створювати автоматично за допомогою планувальника періодичні резервні копії (щодня, щотижня, щомісяця тощо).

Висновок

tar — це приклад інструмента, який не застаріває, навіть попри десятиліття розвитку Linux-екосистеми. Його сила не в модності чи «зручному інтерфейсі», а в універсальності, передбачуваності та глибокій інтеграції з системою. Саме тому tar досі використовується всюди: від ручної роботи адміністратора до автоматичних резервних копій, від збирання пакетів і контейнерів до серверних бекапів і CI/CD-процесів.

У сучасних Linux-системах tar залишається базовим «будівельним блоком»: він не стискає дані самостійно, але ідеально поєднується з будь-якими алгоритмами стиснення; він не приховує деталей, але зберігає всю важливу метаінформацію; він простий у базовому використанні, але надзвичайно гнучкий у складних сценаріях. Особливо цінною є підтримка інкрементного архівування, яка дозволяє будувати ефективні та надійні системи резервного копіювання без зайвих накладних витрат.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.