Резервное копирование с отправкой на почту

Будем считать, что ssmtp на ubuntu server для отправки писем мы установили по вот этой статье, а предположим вы хотите получать резервные копии конфигурационных файлов с этого сервера на почту. Вся процедура будет происходить на ubuntu server 20.04.
Суть будет сводиться к тому, что в определённую папку складываем необходимые файлы, даём на них полные права, архивируем и отправляем на почту по расписанию.
Той самой папкой для хранения всех файлов будет /usrsrc/bkp/config (вы сами можете определить в какую папку складывать файлы), а папкой для хранения архива со всем файлами будет /usrsrc/bkp/zip
Создадим их:
sudo mkdir -p /usrsrc/bkp/config
sudo mkdir -p /usrsrc/bkp/zip
sudo chmod -R 0777 /usrsrc/bkp/

Так же нам надо будет установить zip и mutt на ubuntu server:
sudo apt-get update
sudo apt-get install zip
sudo apt-get install mutt

zip — это архиватор.
mutt — это почтовый клиент.

Далее определяемся, какие файлы/папки я хочу отправлять.
Допустим это будут:
/etc/nat.sh
/etc/resolv.conf
/etc/minidlna.conf
/etc/dhcp/dhcpd.conf
/etc/netplan/00-installer-config.yaml
/etc/openvpn/

Копируем, назначаем права:
sudo cp /etc/{nat.sh,resolv.conf,minidlna.conf} /usrsrc/bkp/config
sudo cp /etc/dhcp/dhcpd.conf /etc/netplan/00-installer-config.yaml /usrsrc/bkp/config
sudo cp -R /etc/openvpn/ /usrsrc/bkp/config
sudo chmod -R 0777 /usrsrc/bkp/config

Создаём архив в директории /usrsrc/bkp/zip со всем содержимым из директории /usrsrc/bkp/config :
sudo zip /usrsrc/bkp/zip/2021.01.31.zip /usrsrc/bkp/config/*
sudo chmod 0777 /usrsrc/bkp/zip/*.zip

Отправляем архив себе на почту с помощью mutt и ssmtp:
echo «Архив конфигурационных файлов по состоянию на 2021.01.31» | mutt -a «/usrsrc/bkp/zip/2021.01.31.zip» -s «Резервная копия сервера» — адрес_получателя_письма@gmail.com

Удаляем всё за собой:
sudo rm -rf /usrsrc/bkp/config/*
sudo rm -rf /usrsrc/bkp/zip/*

Теперь надо автоматизировать этот процесс, а для этого напишем небольшой скрипт.
sudo nano /usrsrc/bkp/confbkp.sh
Содержимое скрипта (чуть ниже будет ссылка на его скачивание):
#!/bin/bash

# переменная с датой и временем
NOW=$(date +%Y-%m-%d-%H-%M)
# файлы и директории для резервного копирования
BKP01="/etc/nat.sh"
BKP02="/etc/resolv.conf"
BKP03="/etc/minidlna.conf"
BKP04="/etc/dhcp/dhcpd.conf"
BKP05="/etc/netplan/00-installer-config.yaml"
BKP06="/etc/openvpn/"

# директория, куда будем копировать фалы для архивирования
DESTINATION="/usrsrc/bkp/config/"
# директория, куда будет складывать архивы для резервного копирования
ARCHIVE="/usrsrc/bkp/zip/"

# необходимые команды
cp="/usr/bin/cp"
chmod="/usr/bin/chmod"
zip="/usr/bin/zip"
echo="/usr/bin/echo"
rm="/usr/bin/rm"
mutt="/usr/bin/mutt"

# копируем файлы для последующей архивации
$cp $BKP01 $DESTINATION
$cp $BKP02 $DESTINATION
$cp $BKP03 $DESTINATION
$cp $BKP04 $DESTINATION
$cp $BKP05 $DESTINATION
$cp -R $BKP06 $DESTINATION

# Назначаем права на архивируемые файлы
$chmod -R 0777 $DESTINATION

# Архивируем рекурсивно
$zip -r $ARCHIVE$NOW.zip $DESTINATION*

# назначаем права на созданный архив
$chmod 0777 $ARCHIVE*

# отправляем созданный архив на почту
$echo "config srv01 "$NOW | $mutt -a "/usrsrc/bkp/zip/"$NOW.zip -s "backup config files srv01 "$NOW -- адрес_получателя_письма@gmail.com

# Удаляем резервные файлы и архив с сервера, для повторного копирования в случае необходимости
$rm -rf $DESTINATION*
$rm -rf $ARCHIVE*

На этом текст скрипта заканчивается. Подправьте его, указав свои директории для копирования и адрес получателя письма.
Посмотреть или скачать его можно тут или тут.

Делаем скрипт исполняемым
sudo chmod +x /usrsrc/bkp/confbkp.sh

Пробуем выполнить /usrsrc/bkp/confbkp.sh вручную:
sudo bash /usrsrc/bkp/confbkp.sh
Через какое-то время на почту адрес_получателя_письма@gmail.com пришло письмо с архивом, то что нам и надо было.

Теперь, чтобы вручную не отправлять постоянно, сделаем задание в cron, чтобы файл исполнятся, например, каждый понедельник в 04:00.
sudo crontab -e
В конце дописываем:
0 4 * * 1 /usrsrc/bkp/confbkp.sh
Всё. Теперь каждый понедельник будут приходить письма с резервными копиями конфигурационных файлов. С ними восстановить сервер будет гораздо легче и быстрее.

Добавить комментарий