You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
4.2 KiB

#!/bin/bash
#apt update && apt install sshpass -y
set -a # export variables from config.txt test
source config.txt
set +a # stop exporting
DATE="$(date +%Y-%m-%d_%H-%M-%S)"
echo $DATE
#1. We are on the source (e.g. main)
systemctl is-active --quiet platform5.service && systemctl stop platform5
systemctl is-active --quiet platform6.service && systemctl stop platform6
Backup_name=$SOURCE_DB_NAME.migration.$DATE.sql
echo "backup name:" $Backup_name
db_backup() {
echo EVENT_STORE=$EVENT_STORE
if [[ "$EVENT_STORE" == 0 ]]; then
echo Making backup without event_store
PGPASSWORD="$SOURCE_DB_PASSWORD" pg_dump -Fc -T event_store -U postgres $SOURCE_DB_NAME > /var/backups/$SOURCE_DB_NAME.migration.$DATE.sql
elif [[ "$EVENT_STORE" == 1 ]]; then
echo Making backup with event_store
PGPASSWORD="$SOURCE_DB_PASSWORD" pg_dump -Fc -U postgres $SOURCE_DB_NAME > /var/backups/$SOURCE_DB_NAME.migration.$DATE.sql
elif [[ "$EVENT_STORE" == 2 ]]; then
echo "don't make db backup"
else echo "EVENT_STORE value must be 0 or 1 or 2" && exit
fi
}
send_backup() {
if [[ "$EVENT_STORE" == 0 ]] or [[ "$EVENT_STORE" == 1 ]]; then
echo "send dump to the destination"
echo Sending db backup to destination server
cd /var/backups/ && yes | sshpass -p "$DESTINATION_DATABASE_PASSWORD" scp -P $DESTINATION_DATABASE_PORT -o StrictHostKeyChecking=no $SOURCE_DB_NAME.migration.$DATE.sql $DESTINATION_DATABASE_USER@$DESTINATION_DATABASE_IP:~/
cd -
else echo "no backup, nothing to send" && exit
fi
}
create_db() {
sed -e "s/DESTINATION_DB_NAME/${DESTINATION_DB_NAME}/" \
-e "s/DESTINATION_POSTGRES_PASSWORD/${DESTINATION_POSTGRES_PASSWORD}/"\
create_db.sh.template > create_db.sh
sshpass -p "$DESTINATION_DATABASE_PASSWORD" ssh -p $DESTINATION_DATABASE_PORT $DESTINATION_DATABASE_USER@$DESTINATION_DATABASE_IP 'bash -s' < create_db.sh
}
#restore_db(){
# if [[ "$EVENT_STORE" == 0 ]] or [[ "$EVENT_STORE" == 1 ]]; then
# fi
#}
db_backup
send_backup
create_db
#restore_db
evt_full_rsync(){
echo "send $SOURCE_EVT to the destination"
sshpass -p "$DESTINATION_PASSWORD" rsync -e "ssh -p $DESTINATION_PORT" -avz --ignore-existing $SOURCE_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/ $DESTINATION_USER@$DESTINATION_IP:$DESTINATION_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/
}
evt_common_files_rsync(){
echo "send files from $SOURCE_EVT/common to the destination"
sshpass -p "$DESTINATION_PASSWORD" ssh $DESTINATION_USER@$DESTINATION_IP -p $DESTINATION_PORT "mkdir -p $DESTINATION_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/common/"
sshpass -p "$DESTINATION_PASSWORD" rsync -e "ssh -p $DESTINATION_PORT" -avz --ignore-existing -f"- */" -f"+ *" $SOURCE_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/common/ $DESTINATION_USER@$DESTINATION_IP:$DESTINATION_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/common/
}
fonts_rsync(){
echo "send fonts to the destination"
sshpass -p "$DESTINATION_PASSWORD" ssh $DESTINATION_USER@$DESTINATION_IP -p $DESTINATION_PORT "mkdir -p $DESTINATION_PLATFORM_PATH/bin/storage/1/fonts/"
sshpass -p "$DESTINATION_PASSWORD" rsync -e "ssh -p $DESTINATION_PORT" -avz --ignore-existing $SOURCE_PLATFORM_PATH/bin/storage/1/fonts/ $DESTINATION_USER@$DESTINATION_IP:$DESTINATION_PLATFORM_PATH/bin/storage/1/fonts/
}
if [[ "$EVT_COMMON" == 0 ]]; then
echo "Качаю файлы из evt/common"
evt_common_files_rsync
elif [[ "$EVT_COMMON" == 1 ]]; then
echo "Качаю evt целиком"
evt_full_rsync
elif [[ "$EVT_COMMON" == 2 ]]; then
echo "Не скачиваю ничего из storage"
evt_full_rsync
else echo "EVENT_COMMON value must be 0 or 1 or 2" && exit
fi
#Создание БД на локалке
sed -e "s/DESTINATION_DB_NAME/${DESTINATION_DB_NAME}/" \
-e "s/DESTINATION_POSTGRES_PASSWORD/${DESTINATION_POSTGRES_PASSWORD}/"\
create_db.sh.template > create_db.sh
sshpass -p "$DESTINATION_DATABASE_PASSWORD" ssh -p $DESTINATION_DATABASE_PORT $DESTINATION_DATABASE_USER@$DESTINATION_DATABASE_IP 'bash -s' < create_db.sh
#evt_full_rsync
#evt_common_files_rsync
#fonts_rsync
systemctl is-active --quiet platform5.service && systemctl start platform5
systemctl is-active --quiet platform6.service && systemctl start platform6