Следующий сценарий - это легкий способ сделать копию Ваших клиентских данных и Ваших клиентских баз данных в их папке веб-сайта. Как Вы можете знать в ISPConfig 3, у каждого клиента есть папка в виде /var/www/clients/clientXY, в котором есть все его веб-сайты. Сценарий поддержит все его веб-сайты в каждой веб-папке в комплекте с его базами данных, что бы клиент будел в состоянии загрузить их сам. Сценарий также сохраняет прошлые 3 дня этих файлов, и прошлые 3 воскресенья для администраторского использования в каталоге Вашего на выбор (значение по умолчанию /var/backup/sites).
Это очень простой сценарий. Для более продвинутых решение посмотреть на этот пост.
Создайте сценарий, сделав его исполняемым и изменить его:
|
Содержание должно быть следующим: (Измените переменные 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
Вы можете запустить скрипт резервного копирования, выполнив:
|
или Вы можете добавить его в качестве расписанию (например, каждый день в 22:30):
|
и добавьте следующую строку:
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
- << Назад
- Вперёд