« Назад

 

Іноді виникає завдання не просто в резервному копіюванні даних на локальний сервер, а й у передачі цих даних на віддалений сервер для більш надійного зберігання архівів. Причому переважно сервери працюють із протоколом передачі ftp. Тому найбільш універсальний спосіб вирішення поставленої задачі є використання протоколу ftp.     

Вихідні дані

Маємо веб-сервер на Linux із системою керування базами даних mysql. Завдання – виконувати резервне копіювання сайту, включаючи бази даних на віддалений сервер по ftp о 2 годині ночі щодня.

 

Реалізація

Для виконання поставленого завдання будемо використовувати вже розглянутий нами скрипт і просту, зручну програму ftpsync. Викачуємо програму і копіюємо, наприклад у /usr/local/bin/:

#wget http://download.clazzes.org/ftpsync/ftpsync-1.3.06-0.tar.bz2

 

Розпакуємо та скопіюємо файл скрипту ftpsync.pl  в /usr/local/bin/. Синтаксис програми наступний:

ftpsync dir/ ftp://user:pass@host/remdir  

 

Синхронізація локальної папки dir/ c віддаленою папкою remdir ftp-сервера (якщо потрібно синхронізувати кореневий каталог ftp-сервера, замість remdir ставимо / – ftp://user:pass@host//). 

ftpsync ftp://user:pass@host/remdir dir/  

 

Синхронізація віддаленої папки remdir ftp-сервера з локальною папкою dir/.

Достановимо необхідний пакет:

#apt-get install libwww-perl

 

Отримаємо наступний скрипт для синхронізації:

#!/bin/bash
# Шлях до папки з архівами для баз даних
backup_dir="/backup/infotech/bases"
#Шлях до папки з архівами структури сайту
/>backup_dir2="/backup/infotech/site"
#Шаблон для створюваного архіву з датою створення архіву
backup_filename=infotech-` date +%Y-%m-%d`
#Повне ім'я архіву
archive_filename=$backup_filename.tar.gz
#Термін зберігання архівів
Backup_days=30
#Створюємо дамп бази даних, використовуючи користувача з повними правами на базу даних
mysqldump -u пользователь_базы_данных -pпароль_пользователя_базы_данных infotech > $backup_dir/$backup_filename.sql
#Архивуємо створений дамп бази даних
tar -C $backup_dir -czf $backup_dir/$archive_filename $backup_dir/$backup_filename.sql
#Архивуємо структуру сайту
/>tar -C $backup_dir2 -czf $backup_dir2/$archive_filename /шлях_до_структури_сайту/*
#Вилучаємо дамп бази
rm $backup_dir/ $backup_filename.sql
#Знаходимо та видаляємо всі архіви терміном створення понад 30 днів
find $backup_dir/infotech-* -mtime +$Backup_days -exec rm -v {} \;
find $backup_dir2/infotech-* -mtime +$Backup_days -exec rm -v {} \;
#І нарешті ftp-синхронізація:
/usr/local/bin/ftpsync.pl /backup/infotech/ ftp://user:pass@host/remdir

 

Виставляємо обом файлам право на виконання для користувача root і додаємо завдання в планувальник cron:

crontab -e
0 2 * * * /шлях_до_файлу_скрипту 

 

Так просто і невигадливо вирішується на перший погляд складне завдання.

May 22, 2013

Якщо у вас виникли питання

ЗВ'ЯЖІТЬСЯ З НАМИ!

Залишіть свої дані і ми зв'яжемося з вами найближчим часом