以下是一个postgresql数据库备份脚本,备份所有数据库,并且按每个表单独备份,最终打包成tar.gz文件:

#!/bin/bash

# 修改以下变量为你的实际情况
BACKUP_DIR="/path/to/backup"
PGHOST="localhost"
PGPORT="5432"
PGUSER="postgres"
PGPASSWORD="your_password"

# 获取所有数据库名
DB_LIST=`psql -h $PGHOST -p $PGPORT -U $PGUSER -lqt | cut -d \| -f 1 | grep -vE '^(postgres|\||template[0-9])$'`

# 备份每个数据库
for DB_NAME in $DB_LIST; do
    echo "Backing up database: $DB_NAME"
    # 创建备份目录
    mkdir -p $BACKUP_DIR/$DB_NAME
    # 备份整个数据库
    pg_dump -h $PGHOST -p $PGPORT -U $PGUSER -w $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME/$DB_NAME.sql.gz
    # 备份每个表
    TABLE_LIST=`psql -h $PGHOST -p $PGPORT -U $PGUSER -qAt -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public';" $DB_NAME`
    for TABLE_NAME in $TABLE_LIST; do
        echo "Backing up table: $TABLE_NAME"
        pg_dump -h $PGHOST -p $PGPORT -U $PGUSER -w -t $TABLE_NAME $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME/$TABLE_NAME.sql.gz
    done
done

# 打包所有备份文件
tar -czvf $BACKUP_DIR/backup.tar.gz $BACKUP_DIR/*

echo "Backup complete!"

脚本会首先获取所有数据库名,然后对于每个数据库,先备份整个数据库,再备份每个表,最终将所有备份文件打包成tar.gz文件。注意要修改脚本中的变量为你的实际情况

postgresql 数据库备份脚本备份所有数据库并且按每个表单独备份最终打包成targz文件

原文地址: https://www.cveoy.top/t/topic/clpk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录