Примеры работы с tar
Создание архива (без сжатия)
tar -cf archive.tar file1.txt file2.txt
Эта команда создаст архив archive.tar, который будет содержать файлы file1.txt и file2.txt.
-c— создать новый архив-f— определяет имя архива
Создание архива со сжатием gzip
tar -czf archive.tar.gz directory1
Эта команда создаст архив archive.tar.gz, который будет содержать содержимое директории directory1, со сжатием при помощи gzip.
-c— создаёт новый архив-z— для архивации с gzip-сжатием-f— определяет имя архива
Извлечение архива
# Распаковать в текущую директорию
tar -xzf archive.tar.gz
# Распаковать в конкретное место
tar -xzf archive.tar.gz -C /tmp/extracted/
Просмотр содержимого архива
tar -tf archive.tar
Показывает список файлов в архиве без его распаковки.
Создание с подробным выводом (verbose)
tar -czvf archive.tar.gz /home/MyDir/*
Флаг -v выводит имя каждого добавляемого файла — удобно для контроля.
Практика: создание cron-задания из лекции
Шаг 1. Создать файлы скрипта и лога
touch /tmp/script2.sh /tmp/output2.log
Шаг 2. Записать содержимое скрипта
Флаг -e в команде echo сообщает оболочке интерпретировать последовательности \n как символ новой строки:
echo -e '#!/bin/bash\n date\n echo "it works"' > /tmp/script2.sh
Шаг 3. Сделать скрипт исполняемым
chmod +x /tmp/script2.sh
Шаг 4. Открыть редактор crontab и добавить задание
crontab -e
В открывшемся редакторе добавить строку (запуск каждую минуту):
* * * * * /tmp/script2.sh >> /tmp/output2.log
Выйти с сохранением (в vi: Esc, затем :wq; в nano: Ctrl+X, Y).
Шаг 5. Проверить наличие задания
crontab -l
Вывод:
* * * * * /tmp/script2.sh >> /tmp/output2.log
Шаг 6. Следить за выполнением в реальном времени
tail -f /tmp/output2.log
При помощи tail -f можно отслеживать «хвост» файла лога и следить за тем, как каждую минуту скрипт выполняется и в файле появляется новая строка.
Полный пример: скрипт + crontab каждые 15 минут
Создадим простой скрипт, создающий файл с датой:
# /tmp/task_script.sh
#!/bin/bash
DATE=$(date +"%d.%m.%y")
touch /tmp/task_${DATE}.txt
echo "Created: /tmp/task_${DATE}.txt"
Запускаем каждые 15 минут через crontab:
chmod +x /tmp/task_script.sh
crontab -e
# Добавить строку:
*/15 * * * * /tmp/task_script.sh >> /tmp/task_script.log 2>&1
Будьте осторожны при использовании
rm -r $temp_dir в скриптах. Если переменная $temp_dir пустая или содержит неверное значение, команда может удалить важные данные (например, при пустой переменной выполнится rm -r /). Всегда проверяйте значение переменной перед использованием с rm -r:
# ОПАСНО (если $temp_dir пустой):
rm -r $temp_dir
# БЕЗОПАСНО — проверка перед удалением:
if [ -n "$temp_dir" ] && [ -d "$temp_dir" ]; then
rm -r "$temp_dir"
else
echo "ERROR: temp_dir is not set or does not exist"
fi