Создание резервных копий нужных файлов в linux с загрузкой на ftp-сервер
Сисадмины делятся на тех, кто не делает бэкапы и тех, кто уже делает.
(с) народная мудрость
В век цифровых технологий данные становятся большой ценностью. На серверах происходит постоянное обновление данных. Но как же быть с сохранностью этих данных?
Можно настроить 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, вы обезопасите себя от возможных проблем с потерей данных. Успешной работы!