0887 371 498 support@itservice-bg.net
31.10.2019 · Самуил Арсов · Linux commands

Как работи програмата tar в Линукс

Програмата tar в Линукс е швейцарското армейско ножче на системния *nix администратор при архивиране и разпространение на файлове. GNU tar архивите могат да съдържат множество файлове и директории, запазвайки разрешенията им, с поддръжка на множество формати за компресия. Името tar (tape archiver) означава архиватор на ленти — форматът е официален стандарт в POSIX съвместими операционни системи (Linux, Unix, macOS).

Основни флагове

  • c — създава нов архив
  • x — извлича (разархивира) от архив
  • t — показва съдържанието без разархивиране
  • f — указва файла на архива
  • v — verbose — показва обработваните файлове
  • p — запазва разрешенията (permissions) на файловете
  • z — gzip компресия (.tar.gz)
  • j — bzip2 компресия (.tar.bz2)
  • J — xz компресия (.tar.xz)
  • C — указва директорията за разархивиране

Създаване на архив

Синтаксис: tar [флагове] [архив.tar.gz] [директория/файл]

# Създаване на gzip архив
tar pczvf архив.tar.gz /path/to/directory

# Без компресия
tar pcvf архив.tar /path/to/directory

# bzip2 компресия (по-добра, по-бавна)
tar pcjvf архив.tar.bz2 /path/to/directory

# xz компресия (най-добра, най-бавна)
tar pcJvf архив.tar.xz /path/to/directory

Разархивиране

# Разархивиране в текущата директория
tar xzvf архив.tar.gz

# Разархивиране в конкретна директория
tar xzvf архив.tar.gz -C /path/to/destination/

# Разархивиране на bzip2
tar xjvf архив.tar.bz2

# Разархивиране на xz
tar xJvf архив.tar.xz

Преглед на съдържанието без разархивиране

tar tzvf архив.tar.gz

Извличане на конкретен файл от архив

tar xzvf архив.tar.gz path/to/specific/file.txt

Изключване на файлове и директории

# Изключване на директория
tar pczvf архив.tar.gz /var/www/ --exclude=/var/www/cache

# Изключване по шаблон
tar pczvf архив.tar.gz /home/user/ --exclude="*.log" --exclude="*.tmp"

Практически примери за backup

# Архивиране с дата в името
tar pczvf backup-$(date +%Y-%m-%d).tar.gz /var/www/

# Архивиране на MySQL дъмп
mysqldump --all-databases | gzip > db-$(date +%Y-%m-%d).sql.gz

# Архивиране на /etc конфигурации
tar pczvf etc-backup-$(date +%Y-%m-%d).tar.gz /etc/

Заключение

tar е незаменим инструмент за всеки Linux администратор. Комбинацията tar + gzip е най-разпространеният стандарт, но за по-добра компресия при по-бавна скорост може да се използва bzip2 или xz. Запомнете: c = create, x = extract, t = list, f = file — и всичко останало идва естествено с практиката.