docker-postgres/clear
2025-11-12 14:03:29 +08:00

71 lines
2.0 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 获取脚本所在目录的绝对路径
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
# 切换工作目录到脚本所在目录
cd $SCRIPT_DIR
# 加载环境变量
load_env_variables() {
if [ -f ".envrc" ]; then
# 使用direnv加载环境变量
if command -v direnv &> /dev/null; then
eval "$(direnv export bash)"
# 检查POSTGRES_PASSWORD是否已设置如果没有设置尝试执行direnv allow
if [ -z "$POSTGRES_PASSWORD" ]; then
echo "检测到POSTGRES_PASSWORD未设置尝试执行direnv allow..."
direnv allow
# 再次加载环境变量
eval "$(direnv export bash)"
# 再次检查POSTGRES_PASSWORD
if [ -z "$POSTGRES_PASSWORD" ]; then
echo "错误: 密码验证失败,无法继续操作"
return 1
fi
fi
else
echo "错误: 未安装direnv请先安装direnv"
return 1
fi
else
echo "错误: 找不到.envrc文件"
return 1
fi
return 0
}
# 调用函数加载环境变量
if ! load_env_variables; then
echo "无法加载环境变量,脚本退出"
exit 1
fi
# 确认提示
read -p "将终止postgres服务并删除数据库文件和归档文件但保留所有备份。删除操作不可逆是否继续(YES/no): " confirm
if [ "$confirm" != "YES" ]; then
echo "退出脚本"
exit 1
fi
container_name=${POSTGRES_CONTAINER_NAME:-postgres}
# 判断容器是否存在
if [ "$(docker ps -q -f name=${container_name})" ]; then
# 如果容器存在则执行docker compose down
docker compose down
fi
echo "清除数据库文件..."
echo "clear ./data/pgdata/ ..."
rm -rf ./data/pgdata/*
echo "清除归档文件..."
echo "clear ./data/archived/ ..."
rm -rf ./data/archived/*
echo "clear ./data/wal_backup/ ..."
rm -rf ./data/wal_backup/*
echo "备份目录保留,未做任何修改。"