Як розпакувати файл Tar у Linux: розширений посібник для досвідчених користувачів
Витягування .tar, .tar.gz, .tar.bz2 та інших форматів tarball є фундаментальною навичкою в адмініструванні систем Linux, конвеєрах DevOps та управлінні серверами. Хоча команда tar здається простою на перший погляд, досвідчені адміністратори можуть використовувати її розширені прапори, інтеграцію зі скриптами та обробку граничних випадків для досягнення хірургічної точності при роботі з архівами.
Цей комплексний посібник охоплює все — від базової декомпресії до умовного витягування, перевірки цілісності, тестування продуктивності та автоматизації робочих процесів — все, що потрібно досвідченому користувачу для оволодіння tar на Linux.
Що таке файл .tar?
Файл .tar — скорочення від Tape Archive — це консолідований формат архіву, який об’єднує кілька файлів і каталогів в один файл, зберігаючи:
- Структуру каталогів
- Дозволи файлів
- Метадані власництва
- Часові мітки
За замовчуванням архіви .tar не стиснені. Стиснення застосовується як додатковий шар за допомогою форматів, таких як .gz, .bz2, .xz або .zst. Цей модульний дизайн дає адміністраторам точний контроль над балансом між швидкістю стиснення та коефіцієнтом.
| Формат | Розширення | Інструмент стиснення |
|---|---|---|
| Без стиснення | .tar | — |
| Gzip | .tar.gz / .tgz | gzip |
| Bzip2 | .tar.bz2 | bzip2 |
| XZ | .tar.xz | xz |
| Zstandard | .tar.zst | zstd |
Базові команди витягування
1. Витягнути файл .tar (без стиснення)
tar -xf archive.tar2. Витягнути файл .tar.gz або .tgz
tar -xzf archive.tar.gz3. Витягнути файл .tar.bz2
tar -xjf archive.tar.bz24. Витягнути файл .tar.xz
tar -xJf archive.tar.xz5. Витягнути файл .tar.zst (Zstandard)
tar --use-compress-program=unzstd -xf archive.tar.zst> Примітка: Zstandard (.zst) пропонує відмінне співвідношення швидкості до стиснення і все частіше використовується в сучасних дистрибутивах Linux та шарах образів контейнерів.
Поширені прапори та їх функції
Розуміння прапорів tar є важливим для написання надійних скриптів та обробки складних сценаріїв витягування. Нижче наведена таблиця посилань найважливіших параметрів:
| Прапор | Функція |
|---|---|
-x | Витягнути файли з архіву |
-f | Вказати файл архіву для використання |
-v | Детальний вивід — перелічує файли під час їх витягування |
-z | Фільтр через стиснення gzip |
-j | Фільтр через стиснення bzip2 |
-J | Фільтр через стиснення xz |
-C <dir> | Перейти до вказаного каталогу перед витягуванням |
--strip-components=N | Видалити N компонентів шляху на початку імен файлів |
--wildcards | Увімкнути відповідність шаблонів підстановки під час витягування |
--no-same-owner | Не відновлювати власництво файлів (корисно для непривілейованих користувачів) |
--overwrite | Перезаписати існуючі файли без запиту |
--exclude=PATTERN | Виключити файли, які відповідають вказаному шаблону |
--ignore-zeros | Пропустити блоки, заповнені нулями (корисно для пошкоджених архівів) |
-t | Перелічити вміст архіву без витягування |
Розширені приклади витягування
Витягнути в конкретний каталог
Спрямуйте витягнутий вміст до цільового шляху за допомогою прапора -C:
tar -xf archive.tar.gz -C /opt/myapp> Цільовий каталог повинен існувати перед запуском цієї команди. Використовуйте mkdir -p /opt/myapp за потреби.
Вирівняти структуру архіву (видалити папку верхнього рівня)
Коли архів обгортає все всередину однієї папки верхнього рівня, використовуйте --strip-components для її видалення:
tar -xf archive.tar.gz --strip-components=1Це особливо корисно при розгортанні програм безпосередньо в цільовий каталог без проміжного шару папок.
Витягнути лише конкретні файли
Ви можете витягнути окремі файли, вказавши їх шляхи так, як вони з’являються всередині архіву:
tar -xf archive.tar.gz path/to/file1 path/to/file2Витягнути файли, які відповідають шаблону підстановки
Використовуйте --wildcards для фільтрування витягування за шаблоном:
tar -xf archive.tar.gz --wildcards '*.conf'Це витягує лише файли конфігурації .conf з архіву — ідеально для вибіркового відновлення конфігурації без дотику до інших даних.
Виключити файли під час витягування
Виключіть конкретні файли або шаблони з витягування:
tar -xf archive.tar.gz --exclude='*.log'Ви можете об’єднати кілька прапорів --exclude для фільтрування кількох шаблонів одночасно.
Тестування продуктивності витягування
Використовуйте утиліту time для вимірювання часу витягування — корисно при порівнянні форматів стиснення або оптимізації робочих процесів резервного копіювання:
time tar -xf archive.tar.gzОбробка граничних випадків
🧱 Робота з пошкодженими архівами
Якщо архів частково пошкоджений — наприклад, через переривання завантаження або помилку диска — використовуйте --ignore-zeros для пропуску пошкоджених блоків, заповнених нулями, і відновлення якомога більше даних:
tar -xzf broken.tar.gz --ignore-zerosЦей прапор повідомляє tar продовжувати обробку навіть при виникненні неочікуваного EOF або нульових блоків, максимізуючи відновлення даних.
🔍 Попередній перегляд вмісту архіву перед витягуванням
Завжди перевіряйте архів перед витягуванням, особливо при роботі з ненадійними джерелами або в виробничих середовищах:
tar -tf archive.tar.gzЦе перелічує всі файли всередині архіву без запису чого-небудь на диск.
✅ Перевірка цілісності для архівів, стиснених Gzip
Переконайтеся, що архів .tar.gz не пошкоджений перед спробою витягування:
gzip -t archive.tar.gz && echo "Archive integrity OK"Для архівів .tar.xz:
xz --test archive.tar.xz && echo "Archive integrity OK"Включення перевірок цілісності в автоматизовані скрипти запобігає невдалим розгортанням через пошкоджені файли резервної копії.
Поради щодо скриптів для системних адміністраторів
Інтеграція tar у shell-скрипти є одним із найпотужніших способів автоматизації резервного копіювання, розгортання та відновлення робочих процесів на серверах Linux.
Автоматизований скрипт резервного копіювання
#!/bin/bash
TARGET_DIR="/var/www"
ARCHIVE="/backups/site-$(date +%F).tar.gz"
tar -czf "$ARCHIVE" -C "$TARGET_DIR" . && echo "Backup saved to $ARCHIVE"Цей скрипт створює архів, стиснений з датою, вашого кореневого каталогу веб-сайту. Поєднайте його із завданням cron для повністю автоматизованого щоденного резервного копіювання.
