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
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 |