Скрипт резервного копирования веб сервера

Print Friendly, PDF & Email

Задача:

Организовать при помощи скрипта, резервное копирование веб-сервера и баз данных с циклом 5 дней и с последующим копирование на удалённый FTP сервер.

---------------------------------------------------------------

Небольшой скрипт, с помощью которого делаю бекапы (резервные копии) сайтов и базы дынных веб-сервера. Алгоритм работы скрипта примерно следующий:

  1. Получаем список баз данных и делаем бекап всех баз, по отдельности в каждый файл. Поэтому нам потребуется root пользователь баз данных.
  2. Архивируем директории с данными сайтов
  3. Закачиваем бекап на FTP-сервер
  4. Удаляем бекапы старше 5 дней

Конечно, для правильной работы скрипта необходимо изменить параметры в разделе “settings”

#!/bin/sh

# Autor:        osBSD
# date:         2019-03-10
# web:          https://osbsd.com

# Settings

DB_USER="user"
DB_PASS="pass"

FTP_USER="ftp_user"
FTP_PASS="ftp_pass"
FTP_ADDR="ftp.osbsd.com"
FTP_DIR=`date +%F_%H-%M-%S`

SITES_DIR="/usr/local/www"
BACKUP_PATH="/tmp/backup/$FTP_DIR"

mkdir -p $BACKUP_PATH/$FTP_DIR;

# Backup mysql

ALL_DB_NAME="$(mysql -u$DB_USER -p$DB_PASS -Bse 'show databases' | grep -v performance_schema | grep -v information_schema)"
for db in $ALL_DB_NAME; do
echo dump base - $db
mysqldump --force --opt --lock-all-tables -u$DB_USER -p$DB_PASS --databases $db | bzip2 > $BACKUP_PATH/base_$db.bz2
mysqldump --force --opt --lock-all-tables -u$DB_USER -p$DB_PASS --databases $db > $BACKUP_PATH/base_$db.sql
done

# Backup web

for DIR in `ls $SITES_DIR | awk '{print $1}'`; do
    echo archive site - $DIR
        cd $SITES_DIR
    tar -czf $BACKUP_PATH/web_${DIR}.tgz ${DIR}
done

# FTP server upload
cd $BACKUP_PATH
ftp -n -i $FTP_ADDR <<END_SCRIPT
quote USER $FTP_USER
quote PASS $FTP_PASS
cd websait
mkdir $FTP_DIR
cd $FTP_DIR
binary
mput *
quit
END_SCRIPT

# Remove old backups
find $BACKUP_PATH/ -mtime +5 | xargs rm -f

Читайте также:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *