#!/bin/bash
# archiveweblogs.sh v1.0
# Troy Engel <tengel@fluid.com>
# С небольшими изменениями, внесенными автором документа.
# Используется с разрешения автора.
#
# Этот сценарий выполняет резервное копирование
#+ файлов журналов из стандартного каталога установки RedHat/Apache.
# Вставляет дату создания копии в имя файла-архива,
#+ сжимает (bzip), и помещает сжатые файлы в заданный каталог.
#
# Запускается из crontab ночью в 0 часов,
#+ так как bzip2 потребляет значительную часть ресурсов процессора,
#+ если журналы достаточно велики:
# 0 2 * * * /opt/sbin/archiveweblogs.sh
PROBLEM=66
# Здесь укажите ваш каталог для архивации.
BKP_DIR=/opt/backups/weblogs
# Настройки Apache/RedHat по-умолчанию
LOG_DAYS="4 3 2 1"
LOG_DIR=/var/log/httpd
LOG_FILES="access_log error_log"
# Расположение программ в RedHat по-умолчанию
LS=/bin/ls
MV=/bin/mv
ID=/usr/bin/id
CUT=/bin/cut
COL=/usr/bin/column
BZ2=/usr/bin/bzip2
# Проверка прав пользователя?
USER=`$ID -u`
if [ "X$USER" != "X0" ]; then
echo "PANIC: Только root может запускать этот сценарий!"
exit $PROBLEM
fi
# Каталог для резервной копии существует и доступен на запись?
if [ ! -x $BKP_DIR ]; then
echo "PANIC: Каталог $BKP_DIR не найден или не доступен для записи!"
exit $PROBLEM
fi
# Переместить, переименовать и сжать
for logday in $LOG_DAYS; do
for logfile in $LOG_FILES; do
MYFILE="$LOG_DIR/$logfile.$logday"
if [ -w $MYFILE ]; then
DTS=`$LS -lgo --time-style=+%Y%m%d $MYFILE | $COL -t | $CUT -d ' ' -f7`
$MV $MYFILE $BKP_DIR/$logfile.$DTS
$BZ2 $BKP_DIR/$logfile.$DTS
else
# Выдать сообщение об ошибке, если файл недоступен на запись.
if [ -f $MYFILE ]; then
echo "ERROR: $MYFILE not writable. Skipping."
fi
fi
done
done
exit 0
Последние комментарии