Авг 20

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

Опубликовано в Сетевые данные

Работающие примеры простых скриптов для резервного копирования файлов и баз данных MySQL с последующей выгрузкой данных на удаленный FTP-сервер.

Что имеем?

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

Файлы веб-сервера располагаются в директориях

/home/site1

/home/site2

/home/site3

Задача — работая из-под root, настроить ежедневный бэкап файлов.

Сохраняем файлы.

#!/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 [c целью сохранения настроек для простоты копируем весь /etc ]

$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 <

quote USER $FTPU

quote PASS $FTPP

cd $FTPD

mput $DUMPFILE

quit

END_SCRIPT

### clear ###

rm -rf $ARCHIVED

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

Делаем бэкап баз данных

#!/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 <

quote USER $FTPU

quote PASS $FTPP

cd $FTPD

mput $DUMPFILE

quit

END_SCRIPT

### clear ###

rm -rf $ARCHIVED

Данные, сохранены в папке /root/backup/server, имеют такой же вид, как и бэкап файлов, сделанный ранее.

Автоматизируем процесс

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

Комментарии: 0 » Метки: , , ,

You must be logged in to post a comment.