Командная строка: Как создать архив .tar.gz папки logs и исключить из него файлы с расширением .tmp?
Для создания архива `.tar.gz` из папки `logs` с исключением всех файлов с расширением `.tmp` используйте следующую команду:
tar —exclude=’*.tmp’ -czf logs.tar.gz logs/
**Разбор каждого элемента команды:**
— `tar` — утилита для создания и управления архивами в Unix/Linux-системах.
— `—exclude=’*.tmp’` — ключевой флаг, который указывает архиватору игнорировать все файлы, имя которых заканчивается на `.tmp`. Шаблон `*.tmp` означает «любой файл с расширением .tmp». Важно заключать шаблон в одинарные кавычки, чтобы оболочка (shell) не раскрывала его самостоятельно до передачи команде `tar`.
— `-c` — создать новый архив (create).
— `-z` — сжать архив с помощью gzip, что даёт расширение `.gz`.
— `-f logs.tar.gz` — указать имя выходного файла архива. В данном случае архив будет называться `logs.tar.gz`.
— `logs/` — путь к папке, которую нужно заархивировать.
**Важные нюансы:**
1. **Порядок флагов**: флаг `—exclude` должен стоять **до** указания архива и исходной папки, иначе исключение может не сработать корректно.
2. **Несколько исключений**: если нужно исключить несколько типов файлов, можно добавить несколько флагов `—exclude`:
tar —exclude=’*.tmp’ —exclude=’*.log.bak’ -czf logs.tar.gz logs/
3. **Исключение папки**: если нужно исключить не файлы, а целую подпапку, синтаксис аналогичен:
tar —exclude=’logs/cache’ —exclude=’*.tmp’ -czf logs.tar.gz logs/
4. **Проверка содержимого архива**: после создания архива можно убедиться, что `.tmp`-файлы в него не попали:
tar -tzf logs.tar.gz
Флаг `-t` выводит список файлов внутри архива без его распаковки.
5. **Альтернатива с `—exclude-from`**: если исключений много, их можно вынести в отдельный файл:
tar —exclude-from=exclude.txt -czf logs.tar.gz logs/
Где `exclude.txt` содержит паттерны, по одному на строку.
Эта команда работает на всех Unix/Linux-системах, а также в macOS и в WSL (Windows Subsystem for Linux) под Windows.
