Частозадаваемые вопросы - Резервное копирование

Сисадмины делятся на тех, кто не делает бэкапы и тех, кто уже делает.

(с) народная мудрость

 

В век цифровых технологий данные становятся большой ценностью. На серверах происходит постоянное обновление данных. Но как же быть с сохранностью этих данных?

Можно настроить RAID (избыточный массив независимых дисков) и думать, что всё хорошо...

А если в Дата-центре случится ЧП? Данные могут быть потеряны в полном объеме! Для того, что бы этого не произошло, необходимо производить резервное копирование в минимум ТРИ географически и физически разделенных места.

 

Большая часть администраторов часто не задумывается о резервном копировании данных или делает его на тех же серверах, где находятся исходные данные. Через некоторое время (в случае сбоя системы!) администратору приходится восстанавливать систему и данные... И тут приходит осознание необходимости резервного копирования.

 

В ОС Linux есть архиватор tar, который может помочь в создании резерных копий.

 

Самый простой способ создания архива:

tar cvpzf my_archive.tar.gz /home/user

 

После выполнения будет создан архив, в котором будет находиться содержимое папки /home/user.

 

Но создавать архивные копии в полном объеме каждый раз очень накладно из-за постоянного увеличения размера архива. Решение - это использовать инкрементные резервные копии.

 

С этой целью я использую следующий скрипт:

#!/usr/bin/perl

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();

$mon=$mon+1;

$mmon=$mon;

$year=1900+$year;

if ( $mon <= 9 ) {$mmon="0".$mon;}

`mkdir /data/_backups/$mmon`;

$sourcedir="/var/www/"; #папка которую архивировать

$backupdir="/data/_backups/$mmon/"; #куда архивировать

$backupfile="mybackup-$mday-$mmon-$year"; #формат имени файла

$exec="cd $sourcedir; /bin/tar --exclude='*.log' -pczvR --listed-incremental=$backupdir/files.inc -f $backupdir/$backupfile.tgz .; /bin/echo 'tar xvf '$backupfile >> $backupdir/extract.sh";

`$exec`;

 

Результатом работы этого скрипта будет создание архивного файла, то есть файла, содержащего индекс для архива, и файла для распаковки. Каждый запуск скрипта будет, во- первых, проверять наличие изменений в файлах или наличие новых файлов, а во-вторых, добавлять в новые архивы только новые и измененные файлы, что существенно снижает размеры архивов. Если изменений в файлах не было, то в новом архиве не будет дополнительных данных, и его размер будет минимальным.

 

Но как же синхронизировать данные с другим сервером посредством ftp? Очень просто! Для этого имеется скрипт ftpsync. Скачать его можно по ссылке: https://sourceforge.net/projects/ftpsync/

Данный скрипт позволяет производить синхронизацию локальной папки на удаленный сервер либо удаленной папки на локальный сервер.

 

Пример запуска скрипта

ftpsync.pl /локальная/папка/для/синхронизации ftp://логин_на_ftp_сервере:пароль_сервера@адрес_ftp_сервера/папка_на_удаленном_сервер

Папку на удаленном сервере указывать обязательно!

Программа создаст список файлов на локальном и на удаленном сервере, на основании этих данных будет создан список новых либо измененных файлов. Только измененные и новые файлы будет загружены на удаленный сервер.

Таким образом, настроив резервное копирование по расписанию с функцией синхронизации данных на удаленный ftp, вы обезопасите себя от возможных проблем с потерей данных. Успешной работы!