Резервное копирование веб-сервера 1

Думаю, никто не будет спорить, что не один айтишник не может чувствовать себя спокойно не имея n копий самых важных файлов. Резервное копирование — наше все. В силу человеческой лени сей процесс обязательно должен быть автоматизирован и под рукой всегда должно быть несколько версий бэкапов от разного числа.

backup_data

Данный пример написан для веб-сервера под 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

One comment on “Резервное копирование веб-сервера

  1. Pingback: Резервное копирование по FTP | IT дзен

Leave a Reply