更新时间:2023-02-02 20:31:08
请重新检查股票,我是即时进行的。我不记得pg_dump上的-w是什么。
这样,您将为每个数据库获取一个文件。
作为建议,在谈论Windows上的文件夹路径时,请用\ /代替
抱歉。
Please, re-check the scrip, i do it on the fly. I don't remember what is the -w on pg_dump. In this way you will obtain a file for each db. And as a suggestion, use \ instead / when speak about folder paths on Windows Excuse my english.
@echo off
set BASELOG=LOG
set BACKUPDIR=C:/postgres/backups/
set BACKUPDIR2=C:\postgres\backups
set PGHOST=localhost
set PGUSER=postgres
set PGBIN="C:/Program Files/PostgreSQL/9.3/bin/"
set FILELOG=log.txt
set BACKUPDIRDATE="%BACKUPDIR%%date%/"
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
if not exist %BACKUPDIRDATE% mkdir %BACKUPDIRDATE%
(
if exist dbs.lst del dbs.lst
psql -h %PGHOST% -p 5432 -U %PGUSER% -c "SELECT datname FROM pg_database WHERE datistemplate = false;" -o "dbs.lst"
for /f %%a IN (dbs.lst) DO (
echo Backup start %date% %time%
%PGBIN%pg_dump -w -i -h %PGHOST% -U %PGUSER% -F c -b -v -f "%BACKUPDIRDATE%-%%a.compressed" %%a
echo End of backup %BASELOG%
)
FORFILES /p %BACKUPDIR2% /s /D -7 /C "cmd /c rd /S /Q @path"
echo Files are deleted
)>> %BACKUPDIRDATE%%FILELOG% 2>&1