#!/bin/bash
set -e # Выход при любой ошибке
# Параметры подключения к базе данных
HOST="localhost"
DBNAME="rubackup"
USER="rubackup"
PASS="12345"
BACKUP_FILENAME="rb_block_device_metadata_backup.sql"
PORT=5432
# Список таблиц для резервного копирования
TABLE_LIST="-t pool_list -t pool_block_device_extention -t storage_block_devices"
# Запрос на получение дополнительных таблиц для резервного копирования
QUERY_TO_GET_ADDITIONAL_TABLES="SELECT DISTINCT table_name
FROM information_schema.tables
WHERE table_name LIKE 'deduplicated_%'"
if [ "$#" -eq 1 ]; then
if [ "$1" = "dump" ]; then
echo "RuBackup script handler saving Dedup pool metadata started"
ADDITIONAL_TABLES=$(PGPASSWORD="$PASS" psql \
-h "$HOST" \
-d "$DBNAME" -U "$USER" \
-p "$PORT" -qt -c "$QUERY_TO_GET_ADDITIONAL_TABLES")
for table in $ADDITIONAL_TABLES; do
TABLE_LIST="$TABLE_LIST -t $table"
done
# Создание резервной копии всех таблиц в одном файле
PGPASSWORD="$PASS" pg_dump \
-h "$HOST" -d "$DBNAME" -U "$USER" $TABLE_LIST \
-p "$PORT" > "$BACKUP_FILENAME"
echo "A backup copy of the table is saved in a file $BACKUP_FILENAME"
exit 0
fi
if [ "$1" = "restore" ]; then
echo "RuBackup script handler restores Dedup pool metadata started"
# Восстановление
PGPASSWORD="$PASS" psql \
-h "$HOST" -d "$DBNAME" -U "$USER" -f "$BACKUP_FILENAME" \
-p "$PORT"
echo "RuBackup script handler restores Dedup pool metadata finished"
exit 0
fi
echo "Incorrect argument. Type 'dump' or 'restore'"
exit 1
fi
echo "Argument required. Type 'dump' or 'restore'"
exit 1