Бэкап сервера Linux по крону и копирование на удаленный сервер

Все админы знают, что своевременный бэкап сервера Linux может предотвратить катастрофу. Я бы хотел поделиться с вами своим вариантом резервного копирования сервера, который сам использую на своём VDS.
И так. Я написал небольшой sh скрипт, который содержит в себе команды архивирования и копирования на удаленный сервер.
#!/bin/sh
# задаем переменную DATE. Она будет содержать текущую дату.
DATE=`date +%Y-%m-%d_%H-%M-%S`
# задаем переменную содержащую путь к каталогу с бэкапами.
DIR=/home/backups/
# переходим в каталог, где должны храниться бэкапы.
cd $DIR
# создаем дамп всей базы данных MySQL под пользователем root и сжимаем дамп.
mysqldump -uroot -hlocalhost -p'Пароль рута к БД' -A | gzip -c > mysql_all_db_$DATE.gz
# создаем tar сжатый контейнер. Т.е. архивируем каталог www. В каталоге www хранятся все мои сайты.
tar -czf home_$DATE.tar.gz -P /home/www
# дополнительный параметр -P заперщает архиватору отбрасывать корневой '/'.
# Аналогичным образом архивируем конфигурационные файлы системы, необходимые для быстрого развертывания
# сервера из бэкапа.
# каталог httpd, nginx и т.д. Все файлы будут добавлены в архив с сохранением путей.
tar -czf configs_$DATE.tar.gz -P /etc/openvpn /etc/httpd /etc/nginx /etc/my.cnf /etc/php.ini /etc/logrotate.conf /etc/sysconfig/iptables /etc/sysconfig/clock /var/spool/cron
# Копируем наши файлы архивов на удаленный сервер с применением
# **авторизации по ключу**.
# Ключ -i говорит программе scp о том, что для идентификации используется файл "for_scp",
# который я генерировал в статье http://blog.anart.ru/users/2012/11/09/generacziya-klyuchej-dlya-besparolnogo-vxoda.html.
scp -B -i /root/.ssh/for_scp /home/backups/mysql_all_db_$DATE.gz user@server.ru:~/backups_anart.ru
scp -B -i /root/.ssh/for_scp /home/backups/configs_$DATE.tar.gz user@server.ru:~/backups_anart.ru
scp -B -i /root/.ssh/for_scp /home/backups/home_$DATE.tar.gz user@server.ru:~/backups_anart.ru
# удаляем 2 дневные копии архивов
find /home/backups/ -name "*.gz" -mtime 2 -exec rm -f {} \;
# инициализируем переменную freemaemory, задав ей значение процентного использования жесткого диска
freemaemory="$(df -h | grep "5.7" | awk '{ print $4 }')";
# grep "5.7" - фильтрую вывод по размеру своего жесткого диска.
# У Вас будет другое значение. Узнать размер жесткого диска можно командой df -h
# Ну и для информирования я отправляю сообщение себе на почту письмо с сообщением, о том, что натворил.
# Ключ -e позволяет echo использовать спец теги, такие как \n (перенос строки) в данном примере.
echo -e "Создание резервной копии сервера anart.ru успешно завершено "`date`"\n\nСозданы следующие архивы:\nmysql_all_db_"$DATE".gz - Дамп базы данных\nhome_"$DATE".tar.gz - Архив web директории\nconfigs_"$DATE".tar.gz - Архив основных конфигурационных файлов системы.\n\nАрхивы отправлены на удаленный сервер.\n\n2-дневные архивы удалены.\n\nЗанято "$freemaemory" дискового пространства" | mail -s "Backup on anart.ru complate" mail@domain.com
Теперь остается добавить задание в cron:
crontab -e
Далее жмем insert и вводим текст
sh10 3 */3 * * sh /home/make-full-backup.sh
что означает, что sh скрипт make-full-backup.sh
из каталога /home
будет выполняться каждые 3 дня в 3 часа 10 минут.
Далее жмем Esc, затем вводим команду без кавычек :wq
и жмем Enter. Всё. Задание добавлено. Проверить запись в cron можно командой
crontab -l