Пример скрипта периодического удаленного резервирования.
# Периодическое удаленное резервирование # Версия 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