Вход
Русский
USD
Цены в иностранной валюте приведены информационно

Простой способ резервного копирования с выгрузкой по FTP

В этой статье мы покажем вам как создать простой скрипт, делающий бэкапы БД MySQL, файлов.

Регулярное резервное копирование – это очень востребованная операция. В этой статье мы покажем вам как создать простой скрипт, делающий бэкапы БД MySQL, файлов. Скрипт способен также выгружать архивы с данными на удаленный сервер FTP.

Нам потребуется виртуальный физический сервер, на котором стоит ОС Linux, веб-сервер, а также базы данных MySQL. В нашем примере файлы веб-сервера находятся в трех папках:

• /home/site1;

• /home/site2;

• /home/site3.

Чтобы пример был более простым и наглядным, мы будем совершать все действия из-под root-пользователя. В качестве папки для выгрузки бэкапов используется раздел /root/backup/server. Дампы баз данных же будут храниться в /root/backup/mysql.

1) Бэкап файлов

Вот пример скрипта, способного делать архивирование файлов. Внутри квадратных скобок даются пояснения для наглядности.

#!/bin/sh
### System Setup ###
BACKUP=/root/backup/server

### FTP ###
FTPD="/"
FTPU="username" [имя пользователя (логин) удаленного ftp-cервера]
FTPP="megapassword" [пароль доступа к удаленному ftp-серверу]
FTPS="my_remote_backup.ru" [адрес ftp-сервера или его IP]

### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"

## Today + hour in 24h format ###
NOW=$(date +%Y%m%d) [задаем текущую дату и время, для того чтобы итоговый файл выглядел в виде server-YYYYMMDD.tar.gz]

### Create tmp dir ###

mkdir $BACKUP/$NOW
$TAR -cf $BACKUP/$NOW/etc.tar /etc [копируем весь /etc c целью сохранения настроек]
$TAR -cf $BACKUP/$NOW/site1.tar /home/site1/
$TAR -cf $BACKUP/$NOW/site2.tar /home/site2/
$TAR -cf $BACKUP/$NOW/site2.tar /home/site3/

ARCHIVE=$BACKUP/server-$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -zcvf $ARCHIVE $ARCHIVED

### ftp ###
cd $BACKUP
DUMPFILE=server-$NOW.tar.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
cd $FTPD
mput $DUMPFILE
quit
END_SCRIPT

### clear ###

rm -rf $ARCHIVED

Скрипт создаст файл server-ГГГГММДД.tar.gz в папке /root/backup/server. В нем будут содержаться архивы tar папок /etc, /home/site1, /home/site2, /home/site3. Данный файл и будет загружаться на FTP-сервер, адрес которого был указан в начале скрипта.

2) Бэкап баз данных MySQL

Во пример скрипта, способного проводить выгрузку БД. Каждая база будет дампиться в отдельный файл.

#!/bin/sh
# System + MySQL backup script
### System Setup ###
BACKUP=/root/backup/mysql

### Mysql ### [параметры доступа к базам данных MySQL]
MUSER="root"
MPASS="megapassword"
MHOST="localhost"

### FTP ###
FTPD="/"
FTPU="username" [имя пользователя (логин) удаленного ftp-cервера]
FTPP="megapassword" [пароль доступа к удаленному ftp-серверу]
FTPS="my_remote_backup.ru" [адрес ftp-сервера или его IP]

### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

## Today + hour in 24h format ###
NOW=$(date +%Y%m%d)

### Create temp dir ###

mkdir $BACKUP/$NOW

### name Mysql ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do

### ###
mkdir $BACKUP/$NOW/$db
FILE=$BACKUP/$NOW/$db/$db.sql.gz
echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
done

ARCHIVE=$BACKUP/mysql-$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -zcvf $ARCHIVE $ARCHIVED

### ftp ###
cd $BACKUP
DUMPFILE=mysql-$NOW.tar.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
cd $FTPD
mput $DUMPFILE
quit
END_SCRIPT

### clear ###

rm -rf $ARCHIVED

Скрипт будет создавать в папке /root/backup/server файл mysql-ГГГГММДД.tar.gz. Он сбудет содержать в себе архивы tar c дампами всех БД. Скрипт также способен выгружать данные на удаленный FTP-сервер.

Для автоматизации процесса, нам нужно сохранить скрипты в папку /etc/cron.daily/. Нужно также предварительно проверить в файле /etc/crontab, чтобы именно из этой папки скрипты запускались ежедневно.

Мы предлагаем вам лишь один из способов организации резервного копирования. Вы также можете применять любой другой вариант, в том числе и придуманный лично.

Опубликовано: Июнь 8, 2017