[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

Пример скрипта периодического удаленного резервирования.

# Периодическое удаленное резервирование
# Версия 1.1
# Fire Eater <LinuxRockz@gmail.com>
# 4 февраля 2006
# Выпущено под лицензией GPL - http://www.fsf.org/licensing/licenses/gpl.txt
##############################################################################
#
SERVER_HOSTNAME="`hostname`"

BACKUP_UID="yourbackupuser"
BACKUP_GID="yourbackupusersgroup"
#
ROOT_BACKUP_DIR="/your/backup/directory"
CONF_DIR="$ROOT_BACKUP_DIR/etc"
#Example: HTTPD, BIND, MYSQL
BACKUP_TYPE="HTTPD"
#
###############################
#  Удаленное резервирование   #
###############################
#
## Использование Rsync
# Вам нужно будет правильно установить авторизацию SSH с использованием ключа
USE_RSYNC="n"
RSYNC_HOST="yourserver"
SSH_RSYNC_USER="yoursshuser"
SSH_RSYNC_DEST_DIR="/your/remote/folder/$SERVER_HOSTNAME"

## Информация и место назначения SCP
# Вам нужно будет правильно установить авторизацию SSH с использованием ключа
USE_SCP="n"
SCP_HOST="yourserver"
SCP_USER="sshuser"
SCP_REMOTEDIR="/your/remote/folder/$SERVER_HOSTNAME"

## FTP
USE_FTP="n"
#  Syntax for FTP_SERVER:  ftp://user:pass@ftp.server.com/folder  (WITHOUT Trailing /)
FTP_SERVER="ftp://"

## Информация и место назначения для электронной почты
EMAIL_INFO="n"
BACKUP_EMAIL="youremailaddress"

###############################################
#  Конфигурация директории / Проверка файлов  #
###############################################

if [ ! -d $CONF_DIR ] ; then
        mkdir -p $CONF_DIR
fi

if [ ! -f $CONF_DIR/homedirs ] ; then
        echo "Отсутствует список домашних директорий"
        echo "Создайте $CONF_DIR/homedirs"
        exit
fi

############################
#  Настройки периодичности #
############################
#
BACKUP_DIR=$ROOT_BACKUP_DIR/$BACKUP_TYPE
BACKUP_DEST="$BACKUP_DIR/backup.0"
BACKUP="$BACKUP_DIR/backup.0"
BACKUP1="$BACKUP_DIR/backup.1"
BACKUP2="$BACKUP_DIR/backup.2"
BACKUP3="$BACKUP_DIR/backup.3"
BACKUP4="$BACKUP_DIR/backup.4"
BACKUP5="$BACKUP_DIR/backup.5"
BACKUP6="$BACKUP_DIR/backup.6"

if [ ! -d $BACKUP_DEST ] ; then
        mkdir -p $BACKUP_DEST
fi

if [ ! -d $BACKUP ] ; then
        mkdir $BACKUP_DIR/backup.0
fi

if [ ! -d $BACKUP1 ] ; then
        mkdir $BACKUP_DIR/backup.1
fi
if [ ! -d $BACKUP2 ] ; then
        mkdir $BACKUP_DIR/backup.2
fi
if [ ! -d $BACKUP3 ] ; then
        mkdir $BACKUP_DIR/backup.3
fi
if [ ! -d $BACKUP4 ] ; then
        mkdir $BACKUP_DIR/backup.4
fi
if [ ! -d $BACKUP5 ] ; then
        mkdir $BACKUP_DIR/backup.5
fi
if [ ! -d $BACKUP6 ] ; then
        mkdir $BACKUP_DIR/backup.6
fi

/bin/rm -rf $BACKUP_DIR/backup.6
mv $BACKUP_DIR/backup.5 $BACKUP_DIR/backup.6
mv $BACKUP_DIR/backup.4 $BACKUP_DIR/backup.5
mv $BACKUP_DIR/backup.3 $BACKUP_DIR/backup.4
mv $BACKUP_DIR/backup.2 $BACKUP_DIR/backup.3
mv $BACKUP_DIR/backup.1 $BACKUP_DIR/backup.2
mv $BACKUP_DIR/backup.0 $BACKUP_DIR/backup.1

if [ ! -d $BACKUP ] ; then
        mkdir $BACKUP_DIR/backup.0
fi
#
##################################
#     НАЧАЛО РЕЗЕРВИРОВАНИЯ      #
##################################
START_TIME=`date +%a-%D-@-%X-%Z`
##################################
#
HTTP_CONF_DIR="/etc/httpd"
USERS_HOME_DIRECTORY="/home"
USERS_LIST="$CONF_DIR/homedirs"
DATENAME=`date +%Y%m%d`
START_TIME=`date +%a-%D-@-%X-%Z`
#
echo "Резервирование конфигурационных директорий HTTPD"
tar cfj $BACKUP_DEST/httpd-$DATENAME.tar.bz2 $HTTP_CONF_DIR  >> /dev/null
#
echo "Резервирование домашних директорий"
#
for USER_DIR in `cat $USERS_LIST`;
do
tar cfj $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $USERS_HOME_DIRECTORY/$USER_DIR  >> /dev/null
done
#
#Установка прав доступа
chown $BACKUP_UID:$BACKUP_GID $BACKUP_DIR
#
##################################
END_TIME=`date +%a-%D-@-%X-%Z`
########################################
#       КОНЕЦ РЕЗЕРВИРОВАНИЯ           #
########################################
#
####################################
# Опции удаленного резервирования  #
####################################
clear
#
if [ $USE_RSYNC = y ] ; then
echo "Производится удаленное резервирование посредством Rsync"
echo ""
su -l $BACKUP_UID -c "rsync -az --stats --partial -e ssh $BACKUP_DIR $SSH_RSYNC_USER@$RSYNC_HOST:$SSH_RSYNC_DEST_DIR"  2>&1
echo "$BACKUP_TYPE Rsync произвел резервирование на $RSYNC_HOST"
echo ""
else
echo "Rsync отключено"
fi
#
if [ $USE_SCP = y ] ; then
echo "Производится удаленное резервирование посредством SCP"
echo ""
scp $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $SCP_USER@$SCP_HOST:$SCP_REMOTEDIR
echo ""
echo "$BACKUP_TYPE SCP произвел резервирование на $SCP_HOST"
else
echo "SCP отключено"
fi
#
if [ $USE_FTP = y ] ; then
echo "Производится удаленное резервирование посредством FTP"
echo ""
curl -T $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $FTP_SERVER/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2
echo "$BACKUP_TYPE FTP произвел резервирование на $FTP_SERVER"
else
echo ""
echo "FTP отключено"
echo ""
fi
#
##################################
#  Результаты по резервированию  #
##################################
#
echo "Текущее резервирование $BACKUP_TYPE для $SERVER_HOSTNAME было завершено и расположено в: $BACKUP_DEST"
echo "" 
echo "Всего использовано пространства на диске для всего резервирования $BACKUP_TYPE."
echo "Размер - Местонахождение"
echo "`du -hs "$BACKUP_DIR"`"
echo "" 
echo "Всего использовано пространства на диске для текущего резервирования $BACKUP_TYPE."
echo "Размер - Местонахождение"
echo "`du -hs "$BACKUP_DEST"`"
#
###################################
#   Отправка результатов по почте #
###################################
#
if [ $EMAIL_INFO = y ] ; then
echo "$SERVER_HOSTNAME $BACKUP_TYPE Отчет по резервированию" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Время начала резервирования: $START_TIME" >> /tmp/emailmsg.txt
echo "Время завершения резервирования: $END_TIME" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Rsync="$USE_RSYNC >> /tmp/emailmsg.txt
echo "SCP="$USE_SCP >> /tmp/emailmsg.txt
echo "FTP="$USE_FTP >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Всего использовано дискового пространства для полного резервирования $BACKUP_TYPE." >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Размер - Местонахождение" >> /tmp/emailmsg.txt
echo "`du -hs "$BACKUP_DIR"`" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Всего использовано дискового пространства для текущего резервирования $BACKUP_TYPE." >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Размер - Местонахождение" >> /tmp/emailmsg.txt
echo "`du -hs "$BACKUP_DEST"`" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
#
cat /tmp/emailmsg.txt | mail -s"$BACKUP_TYPE Выполнено резервирование для $SERVER_HOSTNAME в $END_TIME" $BACKUP_EMAIL
rm -f /tmp/emailmsg.txt
else
echo "E-Mail отключено"
fi
exit

2023-09-11 07:23