Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux

Як розпакувати файл 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 / .tgzgzip
Bzip2.tar.bz2bzip2
XZ.tar.xzxz
Zstandard.tar.zstzstd

Базові команди розпакування

1. Розпакування файлу .tar (без стиснення)

tar -xf archive.tar

2. Розпакування файлу .tar.gz або .tgz

tar -xzf archive.tar.gz

3. Розпакування файлу .tar.bz2

tar -xjf archive.tar.bz2

4. Розпакування файлу .tar.xz

tar -xJf archive.tar.xz

5. Розпакування файлу .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 для повністю автоматизованого щоденного резервного копіювання.

Автоматизований скрипт розпакування та розгортання

#!/bin/bash
SRC="$1"
DEST="$2"

mkdir -p "$DEST"
tar -xzf "$SRC" -C "$DEST" --strip-components=1

Передайте шлях архіву та цільову директорію як аргументи. Прапор --strip-components=1 забезпечує видалення верхньої директорії, розміщуючи файли безпосередньо в $DEST.

Паралельне розпакування великих архівів

На серверах з кількома ядрами ви можете прискорити розпакування архівів .tar.gz за допомогою pigz (паралельний gzip):

tar -I pigz -xf large-archive.tar.gz -C /destination

Це особливо цінно для VPS Hosting або Dedicated Servers з кількома ядрами CPU, де паралельна декомпресія може значно скоротити час розгортання.

Практичні випадки використання в серверних середовищах

Глибоке розуміння tar стає особливо важливим у реальних сценаріях роботи серверів:

  • Розгортання веб-додатків — Розпакуйте архіви випусків безпосередньо в кореневі каталоги веб-сайту на вашому Shared Web Hosting або VPS середовищі.
  • Резервні копії баз даних — Архівуйте та стискайте файли дампів баз даних для ефективного зберігання поза сайтом.
  • Управління SSL сертифікатами — Упакуйте та передавайте SSL Сертифікати та пов’язані файли ключів безпечно між серверами.
  • Управління конфігурацією — Архівуйте /etc каталоги перед оновленнями системи, щоб забезпечити швидкий відкат.
  • Міграція доменів та веб-активів — Упакуйте цілі каталоги сайтів при міграції між хостами або реєстрації нового Domain Registration.

Для ресурсомістких робіт, таких як стиснення великих наборів даних машинного навчання або файлів моделей, розглядайте використання GPU Hosting, де високопродуктивний I/O та обчислювальна потужність значно прискорюють операції архівування.

Шпаргалка швидкого довідника

# ─── Basic Extraction ───────────────────────────────────────────
tar -xf file.tar                                   # No compression
tar -xzf file.tar.gz                               # Gzip
tar -xjf file.tar.bz2                              # Bzip2
tar -xJf file.tar.xz                               # XZ
tar --use-compress-program=unzstd -xf file.tar.zst # Zstandard

# ─── Common Options ─────────────────────────────────────────────
tar -xvf archive.tar                               # Verbose output
tar -C /target/dir -xf file.tar.gz                 # Extract to folder
tar --strip-components=1 -xf file.tar.gz           # Remove top-level dir
tar -xf archive.tar.gz --wildcards '*.conf'        # Wildcard filter
tar -xf archive.tar.gz --exclude='*.log'           # Exclude pattern

# ─── Inspection & Integrity ─────────────────────────────────────
tar -tf archive.tar.gz                             # List contents
gzip -t archive.tar.gz && echo "OK"                # Verify integrity

# ─── Edge Cases ─────────────────────────────────────────────────
tar -xzf broken.tar.gz --ignore-zeros              # Skip corrupt blocks
time tar -xf archive.tar.gz                        # Benchmark extraction
tar -I pigz -xf large-archive.tar.gz -C /dest      # Parallel extraction

Висновок

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

Незалежно від того, чи ви керуєте одним VPS з cPanel чи організовуєте розгортання на кількох виділених серверах, tar залишається незамінним інструментом у наборі інструментів кожного адміністратора Linux. Інвестуйте час у його ретельне вивчення — прибутки в ефективності ваших повсякденних операцій будуть вартими цього.