71 lines
2.0 KiB
Bash
Executable File
71 lines
2.0 KiB
Bash
Executable File
#!/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 "备份目录保留,未做任何修改。" |