Темы
Сервис архивации
Чистка каталогов по списку
Создание пользователей и баз для MySQL
Добавление виртуального хоста APACHE
Включение по сети (Wake-on-LAN)
Построение файлов зон для DNS-сервера
Построение MD5-ХЭШ сумм файлов
Примеры монтирования CIFS
Синхронизация локального репозитория для CentOS
Очистка и переиндексация баз данных Postgres
Скрипт для архивирования баз
Список активных хостов в сети
Тестирование группы хостов на корректность записей в прямой и обратной DNS-зоне
Управление виртуальными машинами скриптами
NMAP: Сканирование хостов и портов (обёртка)
Резервное копирование Файловой системы XFS
Перезапуск сервисов после сна
Динамическое сообщение дня (motd)
Резервное копирование виртуальных машин VirtualBox
Дополнительные материалы
Wake on Lan: Удалённое включение компьютера
Сервис архивации
backup-hosts.sh
- Код: выделить все
#!/bin/sh
##############################################
# Сервис резервного копирования хостов WEB-сервера
# перечисленных в файле hosts.txt
# Создание архивных копий баз данных MySQL-сервера
# перечисленных в файле db.txt
# Составлено: SSERGEY
# Дата: 12.06.2017 v2.0
#############################################
BASE_PATH="$(dirname $(readlink -f $0))"
file="$BASE_PATH/hosts.txt"
db="$BASE_PATH/db.txt"
BACKUP_PATH="/root/BACKUP/"
WEB_DIR="/var/www/"
DATE=`date +%d-%m-%Y`
LOG="/var/log/backup-hosts.log"
# Максимальное сжатие архивных копий
if [ "$SHELL" == "/bin/bash" ]
then
export GZIP=-9
fi
echo "$(date) Создание архивных копий хостов WEB-сервера" >> $LOG
if ! [ -d $BACKUP_PATH$DATE ]
then
mkdir $BACKUP_PATH$DATE
else
echo "$(date) Каталог $BACKUP_PATH$DATE уже существует!" >> $LOG
fi
cd $WEB_DIR
while read line
do
case $line in
[a-zA-Z]* )
if [ -d $line ]
then
backup=`date +%H-%M`".$line.tar.gz"
tar -zcf $BACKUP_PATH$DATE/$backup $line
if [ $? -eq 0 ];
then
echo "$(date) Создан архив $backup" >> $LOG
fi
else
echo "$(date) Хост $line не существует" >> $LOG
fi
;;
esac
done < $file
echo "$(date) Архивирование хостов WEB-сервера завершено" >> $LOG
echo "$(date) Созание архивных копий баз данных MySQL-сервера" >> $LOG
while read line2
do
case $line2 in
[a-zA-Z]* )
if [ -d $line ]
then
backup=`date +%H-%M`".$line2.sql"
mysqldump -uroot -pRootMySQL --add-drop-database -c -e -B $line2 > $BACKUP_PATH$DATE/$backup
if [ $? -eq 0 ];
then
echo "$(date) Создан архив $backup для базы $line" >> $LOG
fi
else
echo "$(date) Ошибка создания архива. Возможно $line2 не существует" >> $LOG
fi
;;
esac
done < $db
echo "$(date) Архивирование Баз Данных MySQL-сервера завершено" >> $LOG
echo "$(date) Архивирование каталогов и файлов" >> $LOG
cd /var
tar -zcf $BACKUP_PATH$DATE/`date +%H-%M`.named.tar named
cd /
tar -zcf $BACKUP_PATH$DATE/`date +%H-%M`.etc.tar etc
cd /usr/lib/systemd/
tar -zcf $BACKUP_PATH$DATE/`date +%H-%M`.services.tar system
cd /root/
tar -zcf $BACKUP_PATH$DATE/`date +%H-%M`.doc.tar doc
tar -zcf $BACKUP_PATH$DATE/`date +%H-%M`.scripts.tar SH
cd /sbin/
tar -zcf $BACKUP_PATH$DATE/`date +%H-%M`.my-script.tar my-script
Список баз MySQL сервера db.txt
- Код: выделить все
acdr
blog-prog
forum
myblog
mysql
nb
pam
proftpd
valak
www
phpmyadmin
Список хостов WEB-сервера hosts.txt
- Код: выделить все
acdr.free-adm.ru
blog-prog.free-adm.ru
forum.free-adm.ru
myblog.free-adm.ru
nb.free-adm.ru
pam.free-adm.ru
pma.free-adm.ru
valak.free-adm.ru
wiki.free-adm.ru
www.free-adm.ru
Подготавливаем скрипт к работе в режиме демона по расписанию
e /etc/systemd/system/backup-hosts.service
- Код: выделить все
[Unit]
Description=Backup Apache virtual hosts & MySQL databases
[Service]
Type=oneshot
ExecStart=/sbin/my-script/backup-hosts.sh
StandardOutput=syslog
cat /etc/systemd/system/backup-hosts.timer
- Код: выделить все
[Unit]
Description=Run 20:10 Backup Apache virtual hosts & MySQL databases
[Timer]
OnCalendar=20:10
Persistent=true
[Install]
WantedBy=timers.target
Запуск сервиса
- Код: выделить все
systemctl enable --now backup-hosts.timer
Enable для задания означает то, что оно появится в списке заданий, --now - включит задание в работу
Пример задания на ротацию логов в systemd
cat /etc/systemd/system/logrotate.timer
- Код: выделить все
[Unit]
Description=Run on 23:59 Rotate log files
[Timer]
OnCalendar=23:59
Persistent=true
[Install]
WantedBy=timers.target
cat /etc/systemd/system/logrotate.service
- Код: выделить все
[Unit]
Description=Rotate log files
[Service]
Type=oneshot
ExecStart=/sbin/my-script/logrotate
StandardOutput=rsyslog
Не забываем снести задание в CRON