バックアップbat
@echo off
setlocal enabledelayedexpansion
REM ============================================================
REM PostgreSQL バックアップスクリプト
REM ============================================================
REM === 変数定義 ===
REM バックアップファイルの出力先(フルパス)
set BACKUP_DIR=C:\backup\postgresql
set BACKUP_FILE=%BACKUP_DIR%\database_backup.dump
REM pg_dumpコマンドのフルパス
set PG_DUMP_PATH=C:\Program Files\PostgreSQL\16\bin\pg_dump.exe
REM ログファイルのパス
set LOG_FILE=C:\backup\postgresql\backup.log
REM === データベース接続情報 ===
set PGHOST=localhost
set PGPORT=5432
set PGUSER=postgres
set PGDATABASE=your_database_name
REM パスワード(環境変数で設定、またはpgpassファイル使用を推奨)
set PGPASSWORD=your_password
REM ============================================================
REM 処理開始
REM ============================================================
REM バックアップディレクトリが存在しない場合は作成
if not exist "%BACKUP_DIR%" (
mkdir "%BACKUP_DIR%"
if errorlevel 1 (
echo [%date% %time%] ERROR: バックアップディレクトリの作成に失敗しました >> "%LOG_FILE%"
exit /b 1
)
)
REM ログに開始時刻を記録
echo [%date% %time%] INFO: バックアップ処理を開始します >> "%LOG_FILE%"
REM pg_dumpコマンドの存在確認
if not exist "%PG_DUMP_PATH%" (
echo [%date% %time%] ERROR: pg_dumpが見つかりません: %PG_DUMP_PATH% >> "%LOG_FILE%"
exit /b 1
)
REM バックアップ実行(カスタム形式、上書き)
"%PG_DUMP_PATH%" -h %PGHOST% -p %PGPORT% -U %PGUSER% -F c -b -v -f "%BACKUP_FILE%" %PGDATABASE% 2>> "%LOG_FILE%"
REM エラーチェック
if errorlevel 1 (
echo [%date% %time%] ERROR: バックアップに失敗しました >> "%LOG_FILE%"
exit /b 1
)
REM バックアップファイルの存在確認
if not exist "%BACKUP_FILE%" (
echo [%date% %time%] ERROR: バックアップファイルが作成されませんでした >> "%LOG_FILE%"
exit /b 1
)
REM ファイルサイズ確認(0バイトでないことを確認)
for %%A in ("%BACKUP_FILE%") do (
if %%~zA==0 (
echo [%date% %time%] ERROR: バックアップファイルが空です >> "%LOG_FILE%"
exit /b 1
)
echo [%date% %time%] INFO: バックアップ完了 - ファイルサイズ: %%~zA bytes >> "%LOG_FILE%"
)
echo [%date% %time%] INFO: バックアップ処理が正常に完了しました >> "%LOG_FILE%"
endlocal
exit /b 0
データベース全体のリストア
"C:\Program Files\PostgreSQL\16\bin\pg_restore.exe" -h localhost -p 5432 -U postgres -d your_database_name -c -v "C:\backup\postgresql\database_backup.dump"
テーブル単位のリストア
REM 単一テーブルのリストア
"C:\Program Files\PostgreSQL\16\bin\pg_restore.exe" -h localhost -p 5432 -U postgres -d your_database_name -t テーブル名 -c -v "C:\backup\postgresql\database_backup.dump"
REM 複数テーブルのリストア
"C:\Program Files\PostgreSQL\16\bin\pg_restore.exe" -h localhost -p 5432 -U postgres -d your_database_name -t テーブル1 -t テーブル2 -c -v "C:\backup\postgresql\database_backup.dump"
コメント