Скрипт для бэкапа PostgreSQL базы
Скрипт находится на том же сервере, где и база. Надо подставить свои данные для доступа к базе. По красоте есть что подправить.
#!/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin DB_HOST="localhost" DB_PORT="5432" DB_USER="poject_name_user" DB_NAME="poject_name_db" BACKUP_DIR="/data/pg_backup" DATE=`date +"%Y-%m-%d_%H-%M"` PGPASS_FILE="$HOME/.pgpass" echo "$DB_HOST:$DB_PORT:$DB_NAME:$DB_USER:<user_password>" > "$PGPASS_FILE" chmod 600 "$PGPASS_FILE" find $pathB \( -name "*-1[^5].*" -o -name "*-[023]?.*" \) -ctime +61 -delete #PG_DUMP_CMD="pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -w -F c -f $BACKUP_DIR/poject_name_db_$DATE.sql" PG_DUMP_CMD="pg_dump --jobs=4 -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -w -Fd -f $BACKUP_DIR/poject_name_db_$DATE.dir" #database restoration #pg_restore -Fd -j 4 -d zs_22 /data/backups_pg/poject_name_db_2023-12-22.dir # echo "Выполняется резервное копирование базы данных..." $PG_DUMP_CMD # Проверка успешности выполнения if [ $? -eq 0 ]; then echo "Резервное копирование завершено успешно. Файл: $BACKUP_DIR/$BACKUP_FILENAME" else echo "Ошибка при выполнении резервного копирования." fi rm "$PGPASS_FILE" echo "Rsync backup to backup store." rsync -a $BACKUP_DIR/poject_name_db_$DATE.dir user@host.name:/backup/poject_name_bk/poject_name/ echo "All done!"
Полезная информация по бэкапу и восстановлению PostgreSQL — https://selectel.ru/blog/postgresql-backup-tools/. Тут есть описание ключей, использованных в скрипте.