Добрый день всем, кто оказался на данном сайте. Сегодня хотелось бы упомянуть такую тему, как автоматизация бэкапов. Про создания бэкапов с помощью моего скрипта вы можете прочитать в этой статье. Эту же статью можно назвать продолжением. Согласитесь, что каждый раз соединяться с сервером, что бы скачать бэкап, крайне неудобно. По этому я решил поделиться своим способом решения этого вопроса. У меня система выглядит следующим образом, в 21,00 на сервере создается бэкап. В 21,30 происходит соединения моего ноутбука по ssh с сервером, и качается бэкап на ноутбук. В 22,00 бэкап на сервере удаляется. Так как не вижу смысла хранить бэкапы на самом сервере. И все это у меня автоматизировано. Что нам для этого понадобится? Первое, сам скрипт приведенный в этой статье. Второе, авторизация ssh по ключу, описано как это сделать в этой статье. И данное руководство. Давайте начнем с того, что создадим скрипт, который будет скачивать по ssh наш бэкап.
Создаем скрипты
Набираем в терминале следующую команду:
sudo nano scp-backup-cyber-x.sh
Название скрипта может быть любым, это на ваше усмотрение. Пишем команду в открывшемся окне:
#!/bin/bash
#backup mysql db of WordPress site:
scp -r cyber-x@192.168.0.109:/home/cyber-x/cyber-x-backup/* /home/cyber-x/Документы/Backup-Cyber-X/
А теперь давайте разберемся что тут делается. Утилита «scp» произведет подключение, в данном случае к моему серверу «cyber-x@192.168.0.109» (замените cyber-x на свое имя для подключения по ssh). А так же замените ip адрес идущий после символа «@». Далее, утилита будет скачивать бэкап, который лежит на сервере по адресу «/home/cyber-x/cyber-x-backup/* «. В вашем случае замените адрес где у вас лежат ваши бэкапы. И качаться он будет в моем случае, на мой ноутбук в папку расположенную по адресу «/home/cyber-x/Документы/Backup-Cyber-X/». Теперь сохраняем скрипт и делаем его исполнительным:
sudo chmod +x scp-backup-cyber-x.sh
После чего, нам нужно записать в crontab задание на то, что бы в определенное время скрипт запускался. Стоит заметить, что в данном случае, запускаться скрипт должен от пользователя cyber-x (в вашем случае, crontab запускайте от своего пользователя). То есть, запускаем crontab без использования sudo. В противном случае, соединение ssh не состоится, так как ключ мы создавали как раз для пользователя cyber-x.
crontab -e
К примеру, у меня задание в cron выглядит следующим образом:
#scp-backup-cyber-x
30 21 * * 1-5 /home/cyber-x/scp-backup-cyber-x.sh
Как я уже говорил, у меня скрипт запускается в 21,30. Далее указаны дни «с понедельника по пятницу». Вы же настраиваете как вам нужно. Более подробно про Crontab написано в этой статье.
Создаем скрипт на сервере
Теперь пришло время настроить скрипт на сервере. Этот скрипт будет удалять бэкапы, что бы они не скапливались на жестком диске сервера. Так как по моему мнению, их там хранить не обязательно. И так, соединяемся по ssh с сервером и создаем скрипт.
sudo nano remove-backup-cyber-x.sh
Вписываем в открывшемся окне следующую команду:
#!/bin/bash
#Remove mysql db of WordPress site:
rm -R cyber-x-backup/*tar.gz
Эта команда будет удалять содержимое каталога cyber-x-backup. То есть, тот самый созданный бэкап нашего сервера. Теперь осталось добавить задание на выполнение в crontab. Тут замечу, что добавлять мы будет с использованием sudo.
sudo crontab -e
Вписываем задание, в моем случае как уже упоминалось выше, удаление быкапа происходит в 22,00 часа. Вы же создаете свое расписание.
0 22 * * 1-5 /home/cyber-x/remove-backup-cyber-x.sh
Так же стоит упомянуть, что можно автоматизировать хранение бэкапов в облаке. Что так же на мой взгляд довольно удобно. К примеру, можно подключить яндекс диск и туда заливать бэкапы с помощью данной инструкции. Вам нужно будет только изменить папку назначения «home/cyber-x/Документы/Backup-Cyber-X» куда будут сохраняться наши бэкапы. О том как подключить яндекс диск читайте в этой статье.
Материал взят с сайта «Cyber-X.ru»