Расширение идеального сервера - Debian 6.0 [ISPConfig 3]

Содержание материала

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Следующий сценарий - это легкий способ сделать копию Ваших клиентских данных и Ваших клиентских баз данных в их папке веб-сайта. Как Вы можете знать в ISPConfig 3, у каждого клиента есть папка в виде /var/www/clients/clientXY, в котором есть все его веб-сайты. Сценарий поддержит все его веб-сайты в каждой веб-папке в комплекте с его базами данных, что бы клиент будел в состоянии загрузить их сам. Сценарий также сохраняет прошлые 3 дня этих файлов, и прошлые 3 воскресенья для администраторского использования в каталоге Вашего на выбор (значение по умолчанию /var/backup/sites).

Это очень простой сценарий. Для более продвинутых решение посмотреть на этот пост.

Создайте сценарий, сделав его исполняемым и изменить его:

  • cd /root/scripts/
  • touch mybackup.sh
  • chmod 0700 mybackup.sh
  • nano mybackup.sh

Содержание должно быть следующим: (Измените переменные ispUSER, ispPASS, ispHOST, DEST and SITES в соответствии со своими потребностями):

# 
# Last updated: March - 2011
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2011 iopen.gr
# Feedback/comment/suggestions : http://iopen.gr
# --------------------------------------------------------------------
#
#           INTENDED for the  ISPConfig 3.0.x and above
#
# This script will back up every web folder (web, stats, cgi e.t.c 
# of every client in companion with all the client's DBs
# The backups will be placed in the website client's folder 
# The scipt will keep the current and the 2 previous backup
# It will also keep the last 3 sundays
# --------------------------------------------------------------------

# Database credentials. Use a DB user with full read access or use the root user 
ispUSER="root"                  # DB user
ispPASS="---yourpass---"        # user's password
ispHOST="localhost"             # Hostname

CURDIR="$(pwd)" 
# Variables with full path to binaries
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
TAR="$(which tar)" 

# Your Server's  Main  Backup Directory
DEST="/var/backup"
 
# Sites (ONLY) backup directory in your  Main Backup Directory
SITES="$DEST/sites"
  
 
# Variables for Dates in yymmdd format
TODAY=`date +%Y%0m%0d`
YESTERDAY=`date -d '1 day ago' +%Y%0m%0d`
BACK2=`date -d '2 day ago' +%Y%0m%0d`
BACK3=`date -d '3 day ago' +%Y%0m%0d`
BACK22=`date -d '22 day ago' +%Y%0m%0d`
 
[ ! -d $SITES ] && mkdir -p $SITES || :
 
# Give Only root access to backups in this scripts folders
$CHOWN 0.0 -R $SITES
$CHMOD 0600 $SITES

# -------------------------------------------------------------------------- 
# Remove previous (current) backups of the client directory
# The backups are in the form :
# xyzBU.tar.gz for the web sites
# xyzBU.gz for the databases
# -------- CAUTION ---------
# Do not store any other file in this form in the clients directory
# -------------------------------------------------------------------------- 
echo "-------------------------------------------------------------"

QRY="use dbispconfig; SELECT web_domain.system_user, web_domain.system_group, \
web_domain.document_root, web_domain.domain FROM web_domain WHERE  \
web_domain.type!='alias' AND web_domain.system_user IS NOT NULL AND LENGTH(web_domain.redirect_path)<5 OR web_domain.redirect_path IS NULL) ;"

echo $QRY | mysql -u $ispUSER -h $ispHOST -p$ispPASS | while read -r line
do  # ${col[0]}=domain user / folder name / system user, ${col[1]}=clientID / system group ,
        while read -a col  # ${col[2]}=path to website, ${col[3]}= domain name
        do
                echo "    CLEANING OLD BACKUPS in ${col[2]} folder "
                [ -f ${col[2]}/*BU.tar.gz ] && rm ${col[2]}/*BU.tar.gz 
                [ -f ${col[2]}/*BU.gz ] && rm ${col[2]}/*BU.gz 
        done
done

# -------------------------------------------------------------------------- 
# Remove anything that is older than 22 days old and have the form :
# xyzBU.tar.gz for the web sites
# xyzBU.gz for the databases
# from server's $SITES directory
# -------------------------------------------------------------------------- 
                echo "-------------------------------------------------------------"
                echo "    CLEANING OLD BACKUPS in SITES folder "
                [ -f $SITES/*.$BACK22.gz ] && rm $SITES/*.$BACK22.gz
        [ -f $SITES/*.$BACK22.tar.gz ] && rm $SITES/*.$BACK22.tar.gz
                echo "-------------------------------------------------------------"
                echo "                                                             "
                echo "                                                             "

# -------------------------------------------------------------------------- 
# For each client, backup his database in his website folder 
# Furthermore copy today's backup in the server's  $SITES directory 
# Remove the backup that is older than 3 days from server's $SITES directory
# Keep the last 3 Sundays
# -------------------------------------------------------------------------- 

QRY="use dbispconfig; SELECT web_database.database_name , web_database.database_user ,\
 web_domain.system_user, web_domain.system_group, web_domain.document_root, \
web_domain.domain FROM web_database, web_domain WHERE web_database.sys_userid=web_domain.sys_userid \
AND web_database.sys_groupid=web_domain.sys_groupid AND web_domain.type!='alias' \
AND web_domain.system_user IS NOT NULL AND LENGTH(web_domain.redirect_path)<5 OR web_domain.redirect_path IS NULL) ;"

echo $QRY | mysql -u $ispUSER -h $ispHOST -p$ispPASS | while read -r line
do  # ${col[0]} = dbname, ${col[1]}=dbuser , ${col[2]}=domain user / folder name / system user,
        while read -a col   #${col[3]}=clientID / system group , ${col[4]}=path to website, ${col[5]= domain name
        do
                echo "          DB: "${col[0]} 
                echo "-------------------------------------------------------------"
                echo "Backing Up DB:" ${col[0]}  "in :"  ${col[4]}/${col[0]}BU.gz
                $MYSQLDUMP -u $ispUSER -h $ispHOST -p$ispPASS -c --add-drop-table --add-locks \
        --all --quick --lock-tables ${col[0]} | $GZIP -9 > ${col[4]}/${col[0]}BU.gz
                cp ${col[4]}/${col[0]}BU.gz $SITES/${col[0]}.$TODAY.gz
                        if [ `date -d '3 day ago' +%u` -ne 7 ] # if 3 days ago is not Sunday
                        then    #remove the  backup
                                [ -f $SITES/${col[0]}.$BACK3.gz ] && rm $SITES/${col[0]}.$BACK3.gz
                        fi
                $CHOWN ${col[2]}:${col[3]} ${col[4]}/${col[0]}BU.gz
                $CHMOD 0660 ${col[4]}/${col[0]}BU.gz
                echo "-------------------------------------------------------------"
                echo "                                                             "

        done
done

# -------------------------------------------------------------------------- 
# For each client, backup his sites in his website folder 
# Furthermore copy today's backup in the server's  $SITES directory 
# Remove the backup that is older than 3 days from server's $SITES diriectory
# Keep the last 3 Sundays
# -------------------------------------------------------------------------- 



QRY="use dbispconfig; SELECT web_domain.system_user, web_domain.system_group,\
 web_domain.document_root, web_domain.domain FROM web_domain WHERE  \
web_domain.type!='alias' AND web_domain.system_user \
IS NOT NULL AND LENGTH(web_domain.redirect_path)<5 OR web_domain.redirect_path IS NULL) ;"

echo $QRY | mysql -u $ispUSER -h $ispHOST -p$ispPASS | while read -r line
do     # ${col[0]}=domain user / folder name / system user, ${col[1]}=clientID / system group ,
        while read -a col   # ${col[2]}=path to website, ${col[3]}= domain name
        do
                echo "                                                             "
                echo "         Site:" ${col[3]}
                echo "-------------------------------------------------------------"
                echo "Backing Up site: " ${col[2]}/  "in :"  ${col[2]}/${col[3]}BU.tar.gz
                cd ${col[2]}
                $TAR -czf ${col[2]}/${col[3]}BU.tar.gz .
                cp ${col[2]}/${col[3]}BU.tar.gz $SITES/${col[3]}.$TODAY.tar.gz
                        if [ `date -d '3 day ago' +%u` -ne 7 ] # if 3 days ago is not Sunday
                        then    #remove the backup
                                [ -f $SITES/${col[3]}.$BACK3.tar.gz ] && rm $SITES/${col[3]}.$BACK3.tar.gz
                        fi
                $CHOWN ${col[0]}:${col[1]} ${col[2]}/${col[3]}BU.tar.gz
                $CHMOD 0660 ${col[2]}/${col[3]}BU.tar.gz

                echo "-------------------------------------------------------------"
                echo "                                                             "
        done
done
cd $CURDIR

Вы можете запустить скрипт резервного копирования, выполнив:

  • /root/scripts/mybackup.sh

или Вы можете добавить его в качестве расписанию (например, каждый день в 22:30):

  • crontab -e

и добавьте следующую строку:

30 22 * * * /root/scripts/mybackup.sh > /dev/null 2>> /var/log/backup.log

Обсуждение темы на форуме Идеальный сервер - Debian 6.0 [ISPConfig 3]. На нашем форуме имеется скрипт предназначеный для автоматической установки веб-клиента roundcube 0.7.1 со всеми фишками ISPConfig 3. Все действия на сервере выполняются из под root. Проверено пока на Ubuntu 10.04.03 и Debian-6.0.4. С благодарностью к SinglWolf администрация проекта mini Server. >>> [How To]Автоматическая установка Roundcube для ISPConfig 3


Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

Регистрация на сайте только по согласованию с администратором ресурса. Обращаться через форму обратной связи.