备份一个数据库保留30天:
#!/bin/bash
# 设置数据库名称和备份目录
DB_NAME="your_database_name"
BACKUP_DIR="/path/to/your/backup/directory"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 设置备份文件名
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$(date +%Y-%m-%d_%H-%M-%S).backup"
# 执行备份命令
pg_dump -Fc $DB_NAME > $BACKUP_FILE
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "Backup successfully created at $BACKUP_FILE"
else
echo "Error creating backup"
fi
# 删除30天前的备份文件
find $BACKUP_DIR -name "$DB_NAME*.backup" -type f -mtime +30 -delete
备份整个库:
#!/bin/bash
# 设置备份目录
BACKUP_DIR="/path/to/your/backup/directory"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 设置备份文件名
BACKUP_FILE="$BACKUP_DIR/postgres-$(date +%Y-%m-%d_%H-%M-%S).backup"
# 执行备份命令
pg_dumpall -Fc > $BACKUP_FILE
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "Backup successfully created at $BACKUP_FILE"
else
echo "Error creating backup"
fi
还原:
确保您有一个有效的备份文件,该文件可以是使用 pg_dump 或 pg_dumpall 命令创建的 *.backup 文件。
创建一个新的空数据库以用于还原。您可以使用 createdb 命令创建新数据库。例如,如果您要创建名为 new_database 的数据库,则可以使用以下命令:
bash
Copy code
createdb new_database
使用 pg_restore 命令将备份文件还原到新数据库中。例如,如果您有一个名为 backup_file.backup 的备份文件,并且您要将其还原到 new_database 数据库中,则可以使用以下命令:
bash
Copy code
pg_restore -Fc -d new_database backup_file.backup
-Fc 指定备份文件的格式为自定义格式
-d new_database 指定还原到新数据库 new_database
检查还原的结果。您可以连接到新数据库并执行查询以确认还原是否成功。例如:
bash
Copy code
psql -d new_database
# 检查是否存在需要的表和数据
\dt
SELECT * FROM some_table;
请注意,还原过程将覆盖目标数据库中的现有数据。在还原之前,请确保已备份目标数据库并仔细检查还原操作。
原文链接:postgresql备份脚本,转载请注明来源!