PgSql指令碼如下
儲存到指定路徑 並 添打成壓縮包
@echo off
setlocal enabledelayedexpansion
set pg_path=D:\PgSql\bin REM 資料庫Bin路徑
set base_backup_path=D:\backup_pgsql REM 備份路徑
set db_name= pgsql REM 資料庫名稱
set user=postgres REM 資料庫賬戶名
set PGPASSWORD=password REM 資料庫密碼
set port=15432 REM 資料庫埠
for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%
set time=%datetime:~8,6%
set backup_path=%base_backup_path%\%year%\%month%\%day%
if not exist "%backup_path%" (
mkdir "%backup_path%"
)
rem 只保留到秒,去掉微秒部分
set backup_file=%backup_path%\%db_name%_%year%%month%%day%_%time:~0,6%.backup
echo 備份檔案路徑: !backup_file!
echo 開始備份...
"%pg_path%\pg_dump" -U %user% -p %port% -F c -b -v -f "!backup_file!" %db_name% > "%base_backup_path%\backup_log.txt" 2>&1
if %ERRORLEVEL% neq 0 (
echo 備份失敗,請檢查pg_dump命令是否正確執行。
echo 檢視日誌檔案:%base_backup_path%\backup_log.txt
) else (
echo 備份完成: !backup_file!
rem 使用 PowerShell 壓縮檔案
set zip_file=%backup_path%\%db_name%_%year%%month%%day%_%time:~0,6%.zip
echo 壓縮檔案路徑: !zip_file! rem 新增此行以檢查 zip_file 的值
rem 使用 call 來傳遞變數
powershell -command "Compress-Archive -Path '!backup_file!' -DestinationPath '!zip_file!'"
if !ERRORLEVEL! neq 0 (
echo 壓縮失敗,請檢查PowerShell命令是否正確執行。
) else (
echo 壓縮完成: !zip_file!
rem 刪除備份檔案
del "!backup_file!"
echo 備份檔案已刪除: !backup_file!
)
)
endlocal
Windows 配置定時任務
- 任務計劃程式
- 建立基本任務
- 操作選擇啟動程式
- 路徑選擇為 剛剛編寫的.bat指令碼
- 儲存