Резервное копирование сайта

sistiem_admin.jpgРешаем типовую задачу - backup сайта на ftp server. Из-за того что переменная datestamp=`date +'%u'` имена файлов будут циклически меняться в течении недели, что обеспечит ротацию бэкапов (т.е. через неделю старые файлы будут перезаписаны новыми).
Внимание, если вы просто скопируете текст, то возможны проблемы в связи с тем что перевод строки кодируется в nix-ах и windows по-разному. Можно воспользоваться умным текстовым редактором, например notepad++, или зайти под ssh и удалять лишние символы ручками. Ниже привожу текст скрипта (почти целиком содран с сайта друпала). Ограничьте доступ к папке с бэкапами либо через .htaccess либо разместив в папке, куда apache не имеет доступа.

#!/bin/bash
#
# fullsitebackup.sh V1.1
#
# Full backup of website files and database content.
#
# A number of variables defining file location and database connection
# information must be set before this script will run.
# Files are tar'ed from the root directory of the website. All files are
# saved. The MySQL database tables are dumped without a database name and
# and with the option to drop and recreate the tables.
#
# ----------------------
# March 2007 Updates
# - Updated script to resolve minor path bug
# - Added mysql password variable (caution - this script file is now a security risk - protect it)
# - Generates temp log file
# - Updated backup and restore scripts have been tested on Ubunutu Edgy server w/Drupal 5.1
#
# - Enjoy! BristolGuy
#-----------------------
#
#Parameters:
# tar_file_name (optional)
#
#
# Configuration
#
# Database connection information
dbname="________" # (e.g.: dbname=drupaldb)
dbhost="________"
dbuser="________" # (e.g.: dbuser=drupaluser)
dbpw="________" # (e.g.: dbuser password)
# Website Files
webrootdir="________" # (e.g.: webrootdir=/home/user/public_html)
excl="./backup" # ( exclude directory /home/user/public_html/backup)
#
ftpdir="________" # (backup folder on ftp server)
ftpip="________" # (e.g.: 10.10.10.1)
ftplogin="________"
ftppassowd="________"
# Variables
#
# Default TAR Output File Base Name
tarnamebase=sitebackup-
datestamp=`date +'%u'`
#datestamp=`date +'%m-%d-%Y'`
# Execution directory (script start point)
startdir="________"
logfile=$startdir"/fullsite.log" # file path and name of log file to use
# Temporary Directory
tempdir=$datestamp
#
# Input Parameter Check
#
if test "$1" = ""
then
tarname=$tarnamebase$datestamp.tgz
else
tarname=$1
fi
#
# Begin logging
#
echo "Beginning drupal site backup using fullsitebackup.sh ..." > $logfile
#
# Create temporary working directory
#
echo " Creating temp working dir ..." >> $logfile
#mkdir $tempdir
/bin/mkdir $startdir/$tempdir
#
# TAR website files
#
echo " TARing website files into $webrootdir ..." >> $logfile
cd $webrootdir
tar cf $startdir/$tempdir/filecontent.tar --exclude=$excl .
#
# sqldump database information
#
echo " Dumping drupal database, using ..." >> $logfile
echo " user:$dbuser; database:$dbname host:$dbhost " >> $logfile
cd $startdir/$tempdir
mysqldump --user=$dbuser --host=$dbhost --password=$dbpw --add-drop-table $dbname > dbcontent.sql
#
# Create final backup file
#
echo " Creating final compressed (tgz) TAR file: $tarname ..." >> $logfile
tar czf $startdir/$tarname filecontent.tar dbcontent.sql
#
# Cleanup
#
echo " Removing temp dir $tempdir ..." >> $logfile
cd $startdir
rm -r $tempdir
echo " Loading on ftp server..." >> $logfile
lftp -c 'set ftp:passive-mode on; set ftp:ssl-allow no; open '$ftpip'; user '$ftplogin' '$ftppassword'; cd '$ftpdir'; put '$startdir'/'$tarname
#
# Exit banner
#
endtime=`date`
echo "Backup completed $endtime, TAR file at $tarname. " >> $logfile

После это добавляем задание в cron. Либо через веб интерфейс хостера, либо через ssh. Я воспользовался вторым способом, т.к. задача запущенная через вэб не имела доступа к папке с бэкапами (особенности хостера). Для подключения через ssh я рекомендую Putty). Пишем crontab -e. Нажимаем i, чтобы перейти в режим редактирования. Добавляем новую задачу 0 1 * * * /путь к скрипту.sh Нажимаем Esc, а потом :wq, для того, чтобы сохранить изменения, либо :q! - чтобы отказаться. Для работы скрипту нужны права 750. Делается через chmod. Теперь каждый день в 01.00 ваша база и файлы будут заливаться на ftp.

Можно спать спокойно.

Материалы по теме

22.07.10 - 11:40 Яндекс запустил ускоренную почту Яндекс начинает открытое бета-тестирование новой версии Яндекс.Почты. Основное её отличие — в ...
ООО "Виктория" нарушает лицензию ПО TeamViewer В четверг (26 августа) был в магазине Виктория (на ул.Шевцовой) и был свидетелем того что даже ...
● Около 8 тысяч потребительских кредитов выдано в Калининградском отделении Сбербанка с начала года С начала года в Калининградском отделении Сбербанка выдано 7795 потребительских кредитов на ...

Последние статьи

21.10.15 - 14:55 ● Выбор ПО для удаленного администрирования: о чем нужно помнить Независимо от того, входит ли системный администратор в штат ...
20.08.15 - 10:25 ● Около 8 тысяч потребительских кредитов выдано в Калининградском отделении Сбербанка с начала года С начала года в Калининградском отделении Сбербанка выдано 7795 ...
29.07.15 - 09:17 ● Как сделать landing page Если вы решили продвигать какой-либо товар или услугу, то вам не ...
28.01.15 - 15:27 ● Удаленное администрирование для оказания качественной технической поддержки пользователей На сегодняшний день самыми распространенными каналами связи между ...
15.01.15 - 11:09 ● Удаленный доступ: администрируйте сеть не сходя с места Наряду со все расширяющимися обязанностями системного администратора, ...

Последние комментарии

в статьях:
Акция! Купи 1С:Предприятие или 1С:Торговля или 1С:Производство и получи подарок на 1500рублей
ia_partner.png