Автоматизируем процесс создания резервной копии CRM vTiger 5.2.1
Недавно появилась необходимость в написании bash скрипта, по автоматизации процесса создания резервной копии CRM vTiger системы. CRM система развернута на CentOS 5.10 (Final) и соответственно скрипт будет писаться на этой же системе. Написанный скрипт я для удобства расписал комментариями, поэтому если что по прошествии времени разобраться в нем не составит труда.
Задачи скрипта:
- Делать резервную копию базы данных mysql. По-умолчанию база данных называется vtigercrm521.
- Делать резервную копию каталога html CRM системы.
- Размещение резервной копии в указанном хранилище.
- Логирование работы скрипта.
JUQwJTlGJUQwJUJFJUQwJUJCJUQxJTgzJUQxJTg3JUQwJUI4JUQwJUIyJUQxJTg4JUQwJUI4JUQwJUI5JUQxJTgxJUQxJThGJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQxJTgwJUQwJUIwJUQwJUI3JUQwJUI0JUQwJUI1JUQwJUJCJUQwJUI1JUQwJUJEJTIwJUQwJUJEJUQwJUIwJTIwJUQwJUI0JUQwJUIyJUQwJUI1JTIwJUQxJTg3JUQwJUIwJUQxJTgxJUQxJTgyJUQwJUI4LiUyMCVEMCU5RiVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCMCVEMSU4RiUyMCVEMSU4NyVEMCVCMCVEMSU4MSVEMSU4MiVEMSU4QyUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUyQyUyMCVEMSU4RCVEMSU4MiVEMCVCRSUyMCVEMCVCNyVEMCVCMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCOCVEMCVCNSUyMCVEMCVCRiVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCQyVEMCVCNSVEMCVCRCVEMCVCRCVEMSU4QiVEMSU4NSUyQyUyMCVEMCVCRCVEMCVCNSVEMCVCRSVEMCVCMSVEMSU4NSVEMCVCRSVEMCVCNCVEMCVCOCVEMCVCQyVEMSU4QiVEMSU4NSUyMCVEMCVCNCVEMCVCQiVEMSU4RiUyMCVEMSU4MCVEMCVCMCVEMCVCMSVEMCVCRSVEMSU4MiVEMSU4Qi4lMjAlRDAlOTIlRDElODIlRDAlQkUlRDElODAlRDAlQjAlRDElOEYlMjAlRDElODclRDAlQjAlRDElODElRDElODIlRDElOEMlMkMlMjAlRDElOEQlRDElODIlRDAlQkUlMjAlRDAlQkQlRDAlQjUlRDAlQkYlRDAlQkUlRDElODElRDElODAlRDAlQjUlRDAlQjQlRDElODElRDElODIlRDAlQjIlRDAlQjUlRDAlQkQlRDAlQkQlRDAlQkUlMjAlRDAlQjIlRDElOEIlRDAlQkYlRDAlQkUlRDAlQkIlRDAlQkQlRDAlQjUlRDAlQkQlRDAlQjglRDAlQjUlMjAlRDAlQkYlRDAlQkUlRDElODElRDElODIlRDAlQjAlRDAlQjIlRDAlQkIlRDAlQjUlRDAlQkQlRDAlQkQlRDElOEIlRDElODUlMjAlRDAlQjclRDAlQjAlRDAlQjQlRDAlQjAlRDElODcu
Скрипт предусматривает два варианта на выбор, в каком месте размещать резервную копию.
- Локальное хранилище — размещать резервную копию на той же машине, где и развернута CRM система.
- Сетевое хранилище — размещение резервной копии на сетевом ресурсе.
JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI0JTIwJUQwJUJEJUQwJUIwJUQxJTg3JUQwJUIwJUQwJUJCJUQwJUJFJUQwJUJDJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTgyJUQxJThCJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJUQwJUIwJTJDJTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUI5JUQwJUI0JUQwJUI4JUQxJTgyJUQwJUI1JUQxJTgxJUQxJThDJTIwJUQwJUJGJUQwJUJFJTIwJUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI5JUQwJUJBJUQwJUIwJUQwJUJDJTIwJUQwJUI4JTIwJUQwJUI4JUQwJUI3JUQwJUJDJUQwJUI1JUQwJUJEJUQwJUI4JUQxJTgyJUQwJUI1JTIwJUQwJUJGJUQwJUIwJUQxJTgwJUQwJUIwJUQwJUJDJUQwJUI1JUQxJTgyJUQxJTgwJUQxJThCJTIwJUQwJUJGJUQwJUJFJUQwJUI0JTIwJUQxJTgxJUQwJUI1JUQwJUIxJUQxJThGLiUyMCVEMCU5RCVEMCVCOCVEMCVCNiVEMCVCNSUyMCVEMCVCRiVEMSU4MCVEMCVCNSVEMCVCNCVEMSU4MSVEMSU4MiVEMCVCMCVEMCVCMiVEMCVCQiVEMCVCNSVEMCVCRCUyMCVEMCVCQiVEMCVCOCVEMSU4MSVEMSU4MiVEMCVCOCVEMCVCRCVEMCVCMyUyMCVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMC4=
#!/bin/bash ################################# # Переменные для работы скрипта # ################################# #-------------------------------# # Общие параметры # Значение текущей даты date=$(date +%d-%m-%Y) # Значение текущего времени time=$(date +%H-%M) # Временная папка tmp="/tmp/vtiger/" # Log-файл log=$tmp"log.txt" #-------------------------------# # Параметры места расположения бекапов # Локальное хранилище бекапов local_path_backup="/srv/backup/"$date # Сетевое хранилище бекапов smb_path_backup="//192.168.1.2/backup/vTiger" # Название домена (Верхний вегистр) domain="JAKONDA" # Имя пользователя usrname="jakonda" # Пароль passwd="jakonda" # Параметры типа бекапа # 1 - Локальное хранилище # 2 - Сетевое хранилище options=2 #------------------------------# # Параметры соединения с MySQL # Имя пользователя usrmysql="root" # Пароль passwdmysql="password" # Название таблицы namedb="vtigercrm521" #------------------------------# ################################ # Рабочий листинг скрипта # ################################ echo "#----------------------------------------------------------#" echo "Создание резервной копии базы данных и каталога vTiger 5.2.1" echo "#----------------------------------------------------------#" echo "" echo "Подготовка к резервному копированию..." echo"" # Создаем временную папку для работы скрипта mkdir -p $tmp echo "Начало резервного копирования базы данных и каталога vTiger 5.2.1 ($date-$time)" > $log # Проводим подготовку к резервному копированию данных # Считываем параметр типа бекапа и подготовливаем хранилище case "$options" in "1" ) echo "Выбрано использование локального хранилища бекапа" echo "Выбрано резервное копирование в локальное хранилище. ($time)" >> $log #---------------------------------------------- # Этап 1. Создание бекапа базы и архивация его. #---------------------------------------------- # Соединяемся с MySQL для выгрузки дампа базы vTiger echo "Создаем бекап базы данных [$namedb]..." RESULT=$(mysqldump -u $usrmysql -p$passwdmysql $namedb > $tmp$namedb".sql") if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo "Создание бекапа базы данных [$namedb] успешно. ($time)" >> $log # Если выгрузка прошла успешно, то архивируем дамп базы echo "Архивируем полученный файл бекапа..." cd $tmp RESULT=$(tar -czvf $namedb.tar.gz $namedb.sql) cd echo "Готово" echo "Бекап базы данных помещен в архив. ($time)" >> $log # Вычесление контрольной суммы архива (md5, sha1) RESULT=$(md5sum $tmp$namedb.tar.gz | awk '{print $1}') echo "Контрольная сумма (MD5) бекапа базы - $RESULT" >> $log RESULT=$(sha1sum $tmp$namedb.tar.gz | awk '{print $1}') echo "Контрольная сумма (SHA1) бекапа базы - $RESULT" >> $log echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Выгрузка базы данных [$namedb] не удачно. Завершение работы скрипта" >> $log echo exit fi #--------------------------------------------------------- # Этап 2. Создание бекапа каталога vTiger и архивация его. #--------------------------------------------------------- # Выполняем архивацию каталога vtigercrm echo "Создаем бекап каталога [vtigercrm]..." cd /var/www/html/ RESULT=$(tar -czvf $tmp"vtigercrm.tar.gz" ./vtigercrm) if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo "Создание бекапа каталога [vtigercrm] успешно. ($time)" >> $log # Вычесление контрольной суммы архива (md5, sha1) RESULT=$(md5sum $tmp"vtigercrm.tar.gz" | awk '{print $1}') echo "Контрольная сумма (MD5) бекапа базы - $RESULT" >> $log RESULT=$(sha1sum $tmp"vtigercrm.tar.gz" | awk '{print $1}') echo "Контрольная сумма (SHA1) бекапа базы - $RESULT" >> $log echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Создание бекапа каталога [vtigercrm] не удалось. Завершение работы скрипта" >> $log echo exit fi #---------------------------------------------------- # Этап 3. Подготовка хранилища для размещения бекапа. #---------------------------------------------------- # Подготовка локального хранилища (создание папки для рамещения бекапа) echo "Подготовка локального хранилища для размещения бекапа..." mkdir -p $local_path_backup if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo "Локальное хранилище подготовлено к размещению бекапа. ($time)" >> $log echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Не удалось подготовить локальное хранилище. Завершение работы скрипта" >> $log echo exit fi #---------------------------------------------------------------- # Этап 4. Размещение бекапов в хранилище и подчищаем за скриптом. #---------------------------------------------------------------- # Перемещаем созданные файлы в локальное хранилище echo "Размещение бекапов в локальном хранилище..." # Файл дамп базы vtiger521 mv $tmp$namedb.tar.gz $local_path_backup"/"$namedb.tar.gz # Файл каталога vTiger echo "$tmp"vtigercrm.tar.gz" $local_path_buckup"/"vtigercrm.tar.gz" mv $tmp"vtigercrm.tar.gz" $local_path_backup"/"vtigercrm.tar.gz if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo "Перемещение бекапа в локальное хранилище успешно. ($time)" >> $log echo "Создание бекапа базы и каталога vTiger успешно завершено. ($time)" >> $log # Перемещение лог файла в локальное хранилище mv $log $local_path_backup"/"log.txt echo echo "Создание бекапа базы и каталога vTiger успешно завершено." # Если все прошло успешно, то удаляем отработанный временный каталог rm -R $tmp echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Не удалось переместить в локальное хранилище. Завершение работы скрипта" >> $log echo exit fi ;; "2" ) echo "Выбрано использование сетевого хранилища бекапа" echo "Выбрано резервное копирование в сетевое хранилище. ($time)" >> $log #---------------------------------------------- # Этап 1. Создание бекапа базы и архивация его. #---------------------------------------------- # Соединяемся с MySQL для выгрузки дампа базы vTiger echo "Создаем бекап базы данных [$namedb]..." RESULT=$(mysqldump -u $usrmysql -p$passwdmysql $namedb > $tmp$namedb".sql") if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo "Создание бекапа базы данных [$namedb] успешно. ($time)" >> $log # Если выгрузка прошла успешно, то архивируем дамп базы echo "Архивируем полученный файл бекапа..." cd $tmp RESULT=$(tar -czvf $namedb.tar.gz $namedb.sql) cd echo "Готово" echo "Бекап базы данных помещен в архив ($time)" >> $log # Вычесление контрольной суммы архива (md5, sha1) RESULT=$(md5sum $tmp$namedb.tar.gz | awk '{print $1}') echo "Контрольная сумма (MD5) бекапа базы - $RESULT" >> $log RESULT=$(sha1sum $tmp$namedb.tar.gz | awk '{print $1}') echo "Контрольная сумма (SHA1) бекапа базы - $RESULT" >> $log echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Выгрузка базы данных "$namedb" не удачно. Завершение работы скрипта" >> $log echo exit fi #--------------------------------------------------------- # Этап 2. Создание бекапа каталога vTiger и архивация его. #--------------------------------------------------------- # Выполняем архивацию каталога vtigercrm echo "Создаем бекап каталога [vtigercrm]..." cd /var/www/html/ RESULT=$(tar -czvf $tmp"vtigercrm.tar.gz" ./vtigercrm) if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo echo "Создание бекапа каталога [vtigercrm] успешно. ($time)" >> $log # Вычесление контрольной суммы архива (md5, sha1) RESULT=$(md5sum $tmp"vtigercrm.tar.gz" | awk '{print $1}') echo "Контрольная сумма (MD5) бекапа базы - $RESULT" >> $log RESULT=$(sha1sum $tmp"vtigercrm.tar.gz" | awk '{print $1}') echo "Контрольная сумма (SHA1) бекапа базы - $RESULT" >> $log echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Создание бекапа каталога [vtigercrm] не удачно. Завершение работы скрипта" >> $log echo exit fi #---------------------------------------------------- # Этап 3. Подготовка хранилища для размещения бекапа. #---------------------------------------------------- # Подготовка сетевого хранилища (создание папки для рамещения бекапа) echo "Подготовка сетевого хранилища для размещения бекапа..." # Монтируем сетевое хранилище в систему mount -t cifs $smb_path_backup /mnt/samba -o username=$usrname,password=$passwd,domain=$domain if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo "Сетевое хранилище $smb_path_backup подготовлено. ($time)" >> $log # Если монтирование сетевого диска успешно, то создаем в нем папку с текущей датой echo mkdir -p /mnt/samba/$date echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Не удалось подготовить сетевое хранилище. Завершение работы скрипта" >> $log echo exit fi #---------------------------------------------------------------- # Этап 4. Размещение бекапов в хранилище и подчищаем за скриптом. #---------------------------------------------------------------- # Перемещаем созданные файлы в сетевое хранилище echo "Размещение бекапов в сетевом хранилище..." # Файл дамп базы vtiger521 mv $tmp$namedb.tar.gz "/mnt/samba/$date/"$namedb.tar.gz # Файл каталога vTiger mv $tmp"vtigercrm.tar.gz" "/mnt/samba/$date/"vtigercrm.tar.gz if [ $? -eq 0 ]; then echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]" echo "Перемещение бекапа в сетевое хранилище успешно. ($time)" >> $log echo "Создание бекапа базы и каталога vTiger успешно завершено. ($time)" >> $log # Перемещение лог файла в локальное хранилище mv $log "/mnt/samba/$date/log.txt" echo echo "Создание бекапа базы и каталога vTiger успешно завершено." # Если все прошло успешно, то удаляем отработанный временный каталог rm -R $tmp # Размонтируем сетевой диск umount $smb_path_backup echo else echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]" echo "Не удалось переместить в сетевое хранилище. Завершение работы скрипта" >> $log echo exit fi ;; esac
В ходе выполнения скрипта, в консоли будет производится вот такой вывод действий скрипта:
#----------------------------------------------------------# Создание резервной копии базы данных и каталога vTiger 5.2.1 #----------------------------------------------------------# Подготовка к резервному копированию... Выбрано использование сетевого хранилища бекапа Создаем бекап базы данных [vtigercrm521]... [OK] Архивируем полученный файл бекапа... Готово Создаем бекап каталога [vtigercrm]... [OK] Подготовка сетевого хранилища для размещения бекапа... [OK] Размещение бекапов в локальном хранилище... [OK] Создание бекапа базы и каталога vTiger успешно завершено.
JUQwJUEyJUQwJUIwJUQwJUJBJTIwJUQwJUI2JUQwJUI1JTIwJUQwJUIyJTIwJUQwJUJBJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJCJUQwJUJFJUQwJUIzJUQwJUI1JTIwJUQxJTgwJUQwJUIwJUQwJUI3JUQwJUJDJUQwJUI1JUQxJTg5JUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQxJTgxJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQxJTgwJUQwJUI1JUQwJUI3JUQwJUI1JUQxJTgwJUQwJUIyJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQwJUI4JTJDJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQxJTgyJTIwJUQwJUJEJUQwJUIwJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI4JUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJTlCJUQwJUJFJUQwJUIzLSVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiUyQyUyMCVEMCVCMiUyMCVEMCVCQSVEMCVCRSVEMSU4MiVEMCVCRSVEMSU4MCVEMCVCRSVEMCVCQyUyMCVEMSU4MiVEMCVCMCVEMCVCQSUyMCVEMCVCNiVEMCVCNSUyMCVEMCVCMSVEMSU4MyVEMCVCNCVEMSU4MyVEMSU4MiUyMCVEMSU4MyVEMCVCQSVEMCVCMCVEMCVCNyVEMCVCMCVEMCVCRCVEMSU4QiUyMCVEMCVCQSVEMCVCRSVEMCVCRCVEMSU4MiVEMSU4MCVEMCVCRSVEMCVCQiVEMSU4QyVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MSVEMSU4MyVEMCVCQyVEMCVCQyVEMSU4QiUyMChNRDUlMkMlMjBTSEExKSUyMCVEMCVCRiVEMCVCRSVEMCVCQiVEMSU4MyVEMSU4NyVEMCVCNSVEMCVCRCVEMCVCRCVEMSU4QiVEMSU4NSUyMCVEMSU4NCVEMCVCMCVEMCVCOSVEMCVCQiVEMCVCRSVEMCVCMi4=
Начало резервного копирования базы данных и каталога vTiger 5.2.1 (29-04-2017-22-10) Выбрано резервное копирование в сетевое хранилище. (22-10) Создание бекапа базы данных [vtigercrm521] успешно. (22-10) Бекап базы данных помещен в архив (22-10) Контрольная сумма (MD5) бекапа базы - 25c9494eb375484f6230313288d84f98 Контрольная сумма (SHA1) бекапа базы - d1a0083df806f38da88e410f2ed815827c1ccfc2 Создание бекапа каталога [vtigercrm] успешно. (22-10) Контрольная сумма (MD5) бекапа базы - 8eb1f47bbb2b5ba5826c98c4080b8598 Контрольная сумма (SHA1) бекапа базы - 684ee500862103d68c14d11e49d748bfda8dea0a Сетевое хранилище //10.7.7.248/disky/IT/backup/vTiger подготовлено. (22-10) Перемещение бекапа в локальное хранилище успешно. (22-10) Создание бекапа базы и каталога vTiger успешно завершено. (22-10)
JUQwJTkyJUQwJUJFJUQxJTgyJTIwJUQxJTgyJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUI5JTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQxJTgzJTIwJUQwJUJDJUQwJUI1JUQwJUJEJUQxJThGJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQxJTgzJUQxJTg3JUQwJUI4JUQwJUJCJUQxJTgxJUQxJThGLiUyMCVEMCVBMSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiUyMCVEMCVCQyVEMCVCRSVEMCVCNiVEMCVCRCVEMCVCRSUyMCVEMCVCNyVEMCVCMCVEMCVCQSVEMCVCOCVEMCVCNCVEMSU4QiVEMCVCMiVEMCVCMCVEMSU4MiVEMSU4QyUyMCVEMCVCMiUyMGNyb250YWIlMjAlRDAlQjglMjAlRDAlQjElRDElOEIlRDElODIlRDElOEMlMjAlRDElODElRDAlQkYlRDAlQkUlRDAlQkElRDAlQkUlRDAlQjklRDAlQkQlRDElOEIlRDAlQkMlMjAlRDElODclRDElODIlRDAlQkUlMjAlRDElODAlRDAlQjUlRDAlQjclRDAlQjUlRDElODAlRDAlQjIlRDAlQkQlRDElOEIlRDAlQjUlMjAlRDAlQkElRDAlQkUlRDAlQkYlRDAlQjglRDAlQjglMjAlRDAlQjElRDElODMlRDAlQjQlRDElODMlRDElODIlMjAlRDAlQjQlRDAlQjUlRDAlQkIlRDAlQjAlRDElODIlRDElOEMlRDElODElRDElOEYu
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Жаконда, а могли бы расписать гайд по установке vTiger на centos?
Нет, не работаю с rpm системами. Только deb. Одно скажу установка крайне проста, могу расписать ее применительно к deb, а вы уже по аналогии можете проделать все тоже самое на rmp. При установке vTiger, важно подготовить Web-сервер, базу данных и выполнить требуемые настройки php (какие именно настройки нужно выполнить сам установщик vTiger сообщит).
P.S. в статье указан CentOS, т.к. там развернут vTiger прошлыми админами.
Надо же, какая интересная статья, добавлю в закладки, перечитаю еще раз на свежую голову. Автору спасибо за неожиданный взгляд на эту тему.
Всегда пожалуйста
Отличная статья! Спасибо! Не нашел на сайте контакты автора а очень хочется позвонить )
На здоровье ! С какой целью позвонить хочется ?