Загрузил borisova.vilka

Cara Membuat Backup Otomatis dengan Systemd di Linux

Bash
#!/bin/bash
echo "start"
function backup {
DATE=$(date '+%d-%m-%Y_%H-%M')
if [ ! -d "$1" ]
then
echo "Catalog not found"
else
echo "Files:"
tar -zcvf $1$DATE.tar.gz $1
echo "Backup done"
fi
}
CATALOG_DIR=/root/folder
backup $CATALOG_DIR
Чтобы реализовать периодический бэкап каталога каждые 5 минут с использованием systemd,
нам потребуется создать два файла: сервис (backup.service) и таймер (backup.timer). Рассмотрим
пошагово создание системы резервного копирования.
1. Создание Bash-скрипта резервного копирования:
Создаем скрипт /usr/local/bin/backup.sh. Этот файл должен содержать следующую структуру
команд:
bash
Копировать
#!/bin/bash
# Переменная пути к каталогу для бэкапа
BACKUP_DIR="/root/folder"
# Получаем текущую дату-время для имени архива
DATE=$(date '+%d-%m-%Y_%H-%M')
if [[ ! -d "${BACKUP_DIR}" ]]; then
echo "Каталог ${BACKUP_DIR} не найден."
else
# Создаем архив tar.gz текущего каталога
tar -czvf "/backups/${BACKUP_DIR##*/}_${DATE}.tar.gz" "${BACKUP_DIR}"
if [[ $? -eq 0 ]]; then
echo "Резервная копия создана успешно!"
else
echo "Ошибка при создании резервной копии."
fi
fi
Здесь мы добавили путь для хранения резервных копий /backups/.
2. Создание service-файла для запуска резервного копирования:
Файл сервиса позволяет запускать наш bash-скрипт как службу systemd. Создаем файл
/etc/systemd/system/backup.service:
ini
Копировать
[Unit]
Description=Periodic Backup Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/backup.sh
User=root
Group=root
StandardOutput=null
Restart=on-failure
[Install]
WantedBy=multi-user.target
Этот файл определяет поведение службы: тип процесса (simple), исполняемый скрипт (ExecStart),
права доступа и обработку ошибок.
3. Настройка периодического запуска с помощью таймера:
Теперь создадим файл таймера /etc/systemd/system/backup.timer, который будет автоматически
вызывать нашу службу каждую пятую минуту:
ini
Копировать
[Unit]
Description=Run periodic backups every 5 minutes
[Timer]
OnCalendar=*-*-* *:*:00/5
Persistent=true
[Install]
WantedBy=timers.target
Это значит, что система будет активировать сервис каждые 5 минут.
4. Запуск и настройка сервисов:
Затем перезагрузите демон systemd и включите сервисы:
bash
Копировать
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
sudo systemctl start backup.service
Проверьте статус сервисов командой:
bash
Копировать
sudo systemctl list-timers
Итоговая структура файлов:

Скрипт резервного копирования (/usr/local/bin/backup.sh):
bash
Копировать
#!/bin/bash
BACKUP_DIR="/root/folder"
DATE=$(date '+%d-%m-%Y_%H-%M')
...

Сервис (/etc/systemd/system/backup.service):
ini
Копировать
[Unit]
Description=Periodic Backup Service
After=network.target
...

Таймер (/etc/systemd/system/backup.timer):
ini
Копировать
[Unit]
Description=Run periodic backups every 5 minutes
OnCalendar=*-*-* *:*:00/5
Persistent=true
...
Эти файлы позволяют организовать автоматическое резервирование каталога каждый 5 минут с
минимальными усилиями и встроенными средствами Linux.