Администрирование
November 20, 2021
Резервное копирование веб-сервера
Думаю, никто не будет спорить, что не один айтишник не может чувствовать себя спокойно не имея n копий самых важных файлов. Резервное копирование - наше все. В силу человеческой лени сей процесс обязательно должен быть автоматизирован и под рукой всегда должно быть несколько версий бэкапов от разного числа.
Данный пример написан для веб-сервера под Ubunta server 11.10 и создает резервные копии базы данных, файлов сайта и системных настроек. Файлы с бэкапом храняться как локально, так и на сервисе Яндекс.Диск.
Резервные копии автоматически удаляются через промежуток времени, который вы укажите.
Сам скрипт резервного копирования данных под катом.
#!/bin/bash # настройки PROJNAME=server_backup CHARSET=utf8 DBNAME=my_db_name DBFILENAME=my_db_name ARFILENAME=my_db_name HOST=localhost USER=root PASSWD=password DATADIR=/home/backup SRCFILES=/var/www/site.ru/htdocs PREFIX=`date +%F` #начинаем резервное копирование echo "[--------------------------------[`date +%F--%H-%M`]--------------------------------]" echo "[----------][`date +%F--%H-%M`] Run the backup script..." mkdir $DATADIR/$PREFIX 2> /dev/null echo "[++--------][`date +%F--%H-%M`] Generate a database backup..." #MySQL mysqldump --user=$USER --host=$HOST --password=$PASSWD --default-character-set=$CHARSET $DBNAME | gzip > $DATADIR/$PREFIX/$DBFILENAME-`date +%F--%H`.sql.tar.gz if [[ $? -gt 0 ]];then echo "[++--------][`date +%F--%H-%M`] Aborted. Generate database backup failed." exit 1 fi echo "[++++------][`date +%F--%H-%M`] Backup database [$DBNAME] - successfull." echo "[++++++----][`date +%F--%H-%M`] Copy the source code project [$PROJNAME]..." #File (с исключением из резервной копии директории /var/www/site.ru/htdocs/img) tar -czpf $DATADIR/$PREFIX/$ARFILENAME-`date +%F--%H`.tar.gz $SRCFILES --exclude /var/www/site.ru/htdocs/img 2> /dev/null if [[ $? -gt 0 ]];then echo "[++++++----][`date +%F--%H-%M`] Aborted. Copying the source code failed." exit 1 fi # /etc echo "[++++++++--][`date +%F--%H-%M`] Backup /etc directory." tar -czpf $DATADIR/$PREFIX/etc-`date +%F--%H`.tar.gz /etc 2> /dev/null # echo "[+++++++++-][`date +%F--%H-%M`] Copy to yandex.disk" cp $DATADIR/$PREFIX/etc-`date +%F--%H`.tar.gz /mnt/yandex.disk/server_backup/etc-`date +%F--%H`.tar.gz cp $DATADIR/$PREFIX/$ARFILENAME-`date +%F--%H`.tar.gz /mnt/yandex.disk/server_backup/$ARFILENAME-`date +%F--%H`.tar.gz cp $DATADIR/$PREFIX/$DBFILENAME-`date +%F--%H`.sql.tar.gz /mnt/yandex.disk/server_backup/$DBFILENAME-`date +%F--%H`.sql.tar.gz # удаление старых резервных копий через 7 дней. find /home/backup/* -mtime +7 -delete find /mnt/yandex.disk/server_backup/* -mtime +7 -delete echo "[++++++++--][`date +%F--%H-%M`] Copy the source code project [$PROJNAME] successfull." echo "[+++++++++-][`date +%F--%H-%M`] Stat datadir space (USED): `du -h $DATADIR | tail -n1`" echo "[+++++++++-][`date +%F--%H-%M`] Free HDD space: `df -h /home|tail -n1|awk '{print $4}'`" echo "[++++++++++][`date +%F--%H-%M`] All operations completed successfully!" exit 0
Яндекс.Диск вы можете подмонтировать с помощью следующей команды:
mount -t davfs https://webdav.yandex.ru /mnt/yandex.disk
November 20, 2021, 08:11
0 views
0 reactions