#!/bin/bash
# Параметры подключения к базе данных
HOST="localhost"
DBNAME="rubackup"
USER="rubackup"
PASS="12345"
BACKUP_FILENAME="rb_block_device_metadata_backup.sql"
TABLE_LIST="-t pool_list -t pool_block_device_extention -t storage_block_devices" # Список таблиц для резервного копирования
if [ "$#" -eq 1 ]; then
if [ "$1" = "dump" ]; then
echo "RuBackup script handler saving Dedup pool metadata started"
# Извлечение подписей из столбца "signature" в таблице "storage_block_devices"
SIGNATURES=$(PGPASSWORD=$PASS psql -h $HOST -d $DBNAME -U $USER -qt -c "SELECT DISTINCT signature FROM storage_block_devices")
# Формирование строки с перечислением подписей
for signature in $SIGNATURES; do
table_name="deduplicated_block_device_${signature}" # Формирование имени таблицы
TABLE_LIST="$TABLE_LIST -t $table_name" # Добавляем таблицу к списку
done
# Создание резервной копии всех таблиц в одном файле
PGPASSWORD=$PASS pg_dump -h $HOST -d $DBNAME -U $USER $TABLE_LIST >$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 localhost -d rubackup -U rubackup -f $BACKUP_FILENAME
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