Устали от рутинных задач на выделенном сервере или VPS? Научитесь писать bash-скрипты, которые сами делают бекапы, очищают логи и обновляют пакеты. А как это сделать, рассказали в статье!
Введение
Каждое утро многие админы сталкиваются с рутинной задачей — проверять логи и свободное место на десятке серверов. Можно, конечно, сделать чашку кофе и методично пройтись по всем машинам вручную. Но гораздо проще запустить скрипт, который за секунды соберёт всю нужную информацию. Bash‑скрипты отлично подходят для автоматизации таких повторяющихся действий в Linux-средах.
В руководстве объяснили, как создать и использовать shell-скрипты для автоматизации администрирования. Пошагово прошлись по всему: от написания простого скрипта до его запуска по расписанию.
Что такое bash‑скрипт и зачем он нужен администратору
Bash-скрипт — это текстовый файл с командами терминала, которые выполняются последовательно и автоматически. Вы записываете команды так, как вводите в консоли, сохраняете файл и запускаете его одним движением. Скрипт выполнит всё без ошибок сколько угодно раз. Компьютеру неважно, 5 команд или 500 — он выполнит их качественно и быстро, тогда как человек может ошибиться.
Bash нужен администратору, чтобы экономить время и снижать риски. Скрипты автоматизируют бекапы, мониторинг, очистку логов, обновления и многое другое. В крупных компаниях тысячи серверов, и без автоматизации не обойтись. Скрипты работают сами, а админы остаются на важных задачах.
Освоить базовый bash может каждый, достаточно знать Linux‑команды и следить за синтаксисом. Bash есть почти на всех Linux-серверах и macOS. В Windows можно использовать WSL или виртуалку. Для практики удобно взять надёжный и доступный по цене VPS от AdminVPS.
Как написать bash‑скрипт
Начнём с простого примера, чтобы вы научились создавать и запускать скрипты. Допустим, вы хотите автоматизировать вывод какого-то сообщения или отчёта. Для тренировки сделаем скрипт, который здоровается с нами — классический «Hello, World!». Эта мини-задача поможет отработать весь цикл: создание файла, написание команд, сохранение, настройка прав и запуск. После этого уже можно браться за более трудные сценарии.
Шаг 1. Создайте файл скрипта
Откройте терминал на вашей Linux/Unix-системе или в той среде, где установлен Bash. Перейдите в каталог, где будете хранить скрипты. Создайте новый файл с расширением .sh. Например, можно сразу открыть его в редакторе nano командой:
nano hello.sh
Если предпочитаете другой редактор (vim, VS Code и т.д.), используйте его. Главное — файл должен быть текстовым.
Шаг 2. Напишите команды внутри файла
В первую строку обязательно добавьте shebang — указание системы, какой интерпретатор использовать для выполнения скрипта. Для Bash это выглядит так:
#!/bin/bash
Это должна быть самая первая строка файла, без пробелов перед #!. После этого можно писать любые команды, которые вы обычно вводите в консоли. Добавьте, например, команду вывода текста:
#!/bin/bash
echo "Привет! Скрипт успешно работает."
В итоге ваш файл hello.sh содержит две строки: shebang и команду echo с произвольным сообщением. Сохраните изменения и выйдите из редактора. В nano нажмите Ctrl+O для сохранения, Enter, затем Ctrl+X для выхода.
Шаг 3. Сделайте скрипт исполняемым
Сейчас файл есть, но по умолчанию система не позволяет его запускать как программу. Нужно дать права на исполнение. В терминале выполните команду chmod:
chmod +x hello.sh
Эта короткая команда пометит файл как исполняемый, option +x означает «дать права на выполнение». Никакой вывод она не покажет, если всё прошло успешно. На этом этапе скрипт готов к запуску.
Шаг 4. Запустите скрипт
В той же директории выполните:
./hello.sh
Обратите внимание на ./ перед именем — так вы указываете, что запускаете файл из текущей директории. После запуска в терминале должно появиться ваше приветственное сообщение. Поздравляем, только что вы создали и выполнили свой первый bash-скрипт! По сути, вы автоматизировали вывод текста, но важна сама техника: этот же принцип работает для любых других последовательностей команд.
Если скрипт не запускается, проверьте несколько моментов: корректна ли первая строка (shebang), сохранён ли файл в UNIX-формате, выдали ли вы права на выполнение и находитесь ли в нужной папке при запуске. В 99 % случаев ошибки именно в этом.
Практический пример: автоматизация резервного копирования
Регулярное создание резервных копий важно всем, кто администрирует серверы или ведёт сайт. Делать бекапы вручную утомительно и часто забывается. Вместо этого проще написать скрипт, который сам упакует нужные файлы и сохранит копию. Потом настроим его автоматический запуск по расписанию.
Для примера возьмём папку с сайтом — /var/www/mywebsite. Её будем архивировать и сохранять в /backup, добавляя дату к имени файла, чтобы отличать бекапы разных дней. Архив будет в формате tar.gz.
Создайте файл backup.sh через nano и вставьте туда такой код:
#!/bin/bash
SRC="/var/www/mywebsite"
DEST="/backup"
DATE=$(date +%F)
ARCHIVE="backup-$DATE.tar.gz"
tar -czf "$DEST/$ARCHIVE" "$SRC"
if [ $? -eq 0 ]; then
echo "Бекап $ARCHIVE создан и сохранён в $DEST."
else
echo "Ошибка: не удалось создать бекап!" >&2
fi
Первая строка указывает, что скрипт запускается через Bash. Переменная SRC — путь к папке сайта, DEST — куда складывать архивы, DATE — текущая дата в формате ГГГГ-ММ-ДД. Имя архива формируется на её основе. Команда tar создаёт сжатый архив. Проверка кода возврата $? говорит, успешно ли выполнена архивация. В случае ошибки сообщение выводится в поток ошибок.
Сохраните скрипт и дайте права на выполнение командой chmod +x backup.sh. Запустите вручную ./backup.sh. Если всё правильно, в /backup появится архив, а в терминале отобразится сообщение об успехе.
Теперь не нужно каждый день вручную делать бекап — скрипт всё сделает сам. Его можно доработать, например, удалять старые архивы или копировать их на удалённый сервер.
Запуск скриптов по расписанию через cron
Автоматизация была бы неполной, если скрипты приходилось запускать руками. Конечно, вы можете добавить выполнение backup.sh в ежедневный список дел, но лучше доверить эту задачу системе. Cron — это стандартный планировщик заданий в Unix/Linux. С его помощью можно настроить выполнение скрипта в определённое время по расписанию.
Чтобы отредактировать расписание задач, используйте команду:
crontab -e
Эта команда откроет файл расписания (crontab) для текущего пользователя в текстовом редакторе. Предположим, вы хотите запускать бекап-скрипт каждый день в 2 часа ночи. В crontab нужно добавить строку:
0 2 * * * /path/to/backup.sh
Пять полей (минуты, часы, день месяца, месяц, день недели) указаны звёздочками и цифрами. 0 2 * * * означает «в 2:00 каждую ночь, ежедневно, без зависимости от дня недели». После этого через пробел идёт полный путь к скрипту, который надо выполнить. Укажите полный путь к вашему backup.sh, например, /home/user/backup.sh или /usr/local/bin/backup.sh — куда вы его поместили. Сохраните crontab и выйдите. Cron сообщит, что новый график установлен. Обычно появляется сообщение вроде Installing new crontab.
Теперь система будет сама запускать ваш скрипт каждую ночь в указанное время. Результаты cron по умолчанию может отправлять вам по почте: на локальный почтовый ящик пользователя или адрес, указанный в настройках. Если почтовая подсистема не настроена, то хотя бы периодически проверяйте папку /backup или логи, чтобы убедиться, что бекапы действительно создаются. Как вариант, можно дописать в скрипт отправку уведомления через мессенджер или e-mail, но это уже более продвинутый шаг.
Тот же принцип вы можете применять для любых рутинных задач. Например, очистка старых файлов логов. Для этого пишете скрипт, который удаляет файлы старше 7 дней:
find /var/log -type f -mtime +7 -delete
Осторожно с этой командой, убедитесь в правильности пути и условий! После тестируете его, а потом добавляете в cron раз в неделю ночью. Или автоматическое обновление пакетов — скрипт с последовательностью команд обновления:
apt update && apt upgrade -y && apt autoremove -y
Для Debian/Ubuntu можно ставить по расписанию раз в месяц. Возможности практически безграничны. Любую последовательность команд, которую вы выполняете регулярно, можно упаковать в скрипт и поручить cron. Тогда система сама будет поддерживать себя в порядке.
Заключение
Автоматизация резервного копирования с помощью bash-скриптов освобождает от рутинных задач, снижает риск ошибок и разгружает время для важных проектов. Скрипты работают как швейцарские часы даже тогда, когда вы заняты или отдыхаете, позволяя системе заботиться о данных без постоянного контроля. Начинайте с простого, тестируйте вне продакшена и постепенно улучшайте сценарии.
Читайте в блоге:
- Настройка автозапуска Python-скриптов на сервере: cron, systemd, nohup
- Что такое скрипт в IT и для чего он нужен
- Автозагрузка скриптов в Ubuntu