Backup сайта на вашей почте

Простой способ создать backup сайтаBackup сайта (резервная копия сайта) — архив, в котором хранятся все файлы вашего сайта и архив базы mysql. Еще пару лет назад один неприятный случай научил меня простому правилу — всегда делать backup сайтов.

Я недавно сел на новый хостинг и вспомнил о настройке backup. Если Ваш проект растет день ото дня, люди комментируют записи и публикуют новые статьи, то вам жизненно необходимо иметь актуальный backup вашего сайта. Резервная копия сайта пригодиться в том случае, если вы случайным образом потеряете свой интернет-проект или какую-либо его часть.

Некоторые распространенные платные и бесплатные CMS предоставляют возможность создания backup сайта в стандартном функционе или отдельным модулем. Однако я всегда был сторонником собственных разработок.

Так же и скрипт backup сайта я написал сам совместно с напарником. Скрипт может запускаться вручную или через cron tab. Программа создаст backup указанных папок и dump mysql таблиц, после чего отправит их на указанный ящик или перезапишет на сторонний ftp сервер.

Для работы скрипта потребуется Bash, Perl (+ модуль MIME::Lite). Для себя выбрал режим запуска по Cron Tab с интервалом в 1 день:
makebackup.sh
[sourcecode language=»sh»]
#!/usr/bin/bash
# Если нет директории, создаем её
is_dir () {
if [ ! -d $1 ]; then mkdir $1
fi
}
# Оснавная функция создания backup’ов
makebackup () {
echo «—————— MAKE BACKUP www.$1 —————————«
sleep 2
is_dir _backup/$1
is_dir _backup/$1/$1-`date +%d_%m_%y`
is_dir _backup/$1/$1-`date +%d_%m_%y`/$1-split
echo «Make $1.tar.gz»
tar cf — $1 | gzip > _backup/$1/$1-`date +%d_%m_%y`/$1.tar.gz
echo «ok»
echo «Split file $1.tar.gz»
split -b 2m _backup/$1/$1-`date +%d_%m_%y`/$1.tar.gz _backup/$1/$1-`date +%d_%m_%y`/$1-split/$1.tar.gz.
# Можно залить все на сторонний ftp
ftp -n $FTPSERVER1 < /home/www/_mysql-backup/mysqldump_`date +%d.%m.%y`.sql.gz
echo «Make tar gzip»
}
# Последовательность исполнения программы
is_dir _backup
backupmysqldump
makebackup _mysql-backup mail@gmail.com
rm _mysql-backup/*
makebackup domen.ru mail@gmail.com
[/sourcecode]
send.pl (должен лежать рядом)
[sourcecode language=»pl»]
#!/etc/perl
use MIME::Lite;
my $partnum;
my $dir;
my $msg;
my $allfilez;
my $all;
my $i;
my $date = localtime();

$dir = «@ARGV[0]»;
$email = «@ARGV[1]»;
$sitez = «@ARGV[2]»;
$sendmail = «@ARGV[3]»;
$all = ‘0’;
$i = ‘0’;
opendir(DIR, «$dir»); # открыть каталог
@files = readdir(DIR); # массив файлов
closedir(DIR); # закрыть каталог
foreach (@files) {
next if /^\.\.?$/;
$allfilez .= «$_\n»;
$all++;
}
opendir(DIR, «$dir»); # открыть каталог
@files = readdir(DIR); # массив файлов
closedir(DIR); # закрыть каталог
foreach (@files) {
next if /^\.\.?$/;
$filez = $_;
$i++;
print(«Filename($i): $filez\n») unless -d; # выводит список файлов
$msg = MIME::Lite->new( From => «$email»,
To => «$sendmail»,
Subject => «$sitez $filez ($i — $all) $date.»,
Type => ‘multipart/mixed’ );
$msg->attach( Type => ‘text/plain; charset=windows-1251’,
Data => «backup $sitez $date .\n\nFile name — $filez\n\n\nAll files ($i — $all)\n\n.» );
$msg->attach( Type => ‘application/x-zip-compressed’,
Path => «$dir/$filez»,
Filename => «$filez»,
Disposition => ‘attachment’ );
print(«Send file: $filez\n»);
$msg->send() or die («Error: $!\n»);
}
[/sourcecode]
Оба файла в кодировке UTF-8 UNIX можно скачать тут
Решили попробовать установить скрипт или Вам просто понравилась статья — сделай RT записи или поставь на нее ссылку в своем блоге. Спасибо!

Подождите! Не уходите..

  1. А Вы когда нибудь теряли данные с сайта по неосторожности?
  2. Каким видом резервирования данных Вы пользуетесь сегодня?
Полезная статья? Расскажите о ней своим друзьям в вашей любимой социальной сети.
Это будет лучше, чем просто "спасибо" в комментариях :)
6 комментариев к Backup сайта на вашей почте
  1. Dimonus Ответить

    а тоже самое, только на php можно реализовать?

    • buzzman Ответить

      Думаю, что можно, но сам ранее не делал. Уверен, что на php это будет более трудоемкий процесс с большим кодом или подключением каких либо сторонних библиотек и модулей.

  2. Lukyanov Ответить

    Какой скрипт и как запускать в кроне? И что надо убрать, чтобы на email ничего не шло?

    • buzzman Ответить

      По crontab запускать скрипт makebackup.sh, а для отмены отправки данных на почту закомментируйте 33 строку.

      Пожалуйста, Lukyanov, пользуйтесь на здоровье.

  3. Alexander Ответить

    1) да
    2) теперь вашим )))

  4. Alexander Ответить

    По поводу пхп — у многих хостеров стоит ограничения на время и нагрузку, я бл зазиповать 20 метров не мог на sweb.ru
    тут скорее всего проще будет

Добавить комментарий

** Ваш email никогда не будет опубликован.