编写一个批处理,备份D盘的postgrSQL数据库到D盘backup目录下,用winrar压缩,并删除/backup目录下面创建时间超过3天文件
时间: 2023-09-25 13:06:43 浏览: 155
### 回答1:
以下是批处理的代码:
```
@echo off
:: 备份postgreSQL数据库
"C:\Program Files\PostgreSQL\13\bin\pg_dump.exe" -Ft -b -U postgres -f "D:\backup\postgreSQL_%date%.tar" postgres
:: 使用winrar压缩备份文件
"C:\Program Files\WinRAR\winrar.exe" a -afzip -r "D:\backup\postgreSQL_%date%.zip" "D:\backup\postgreSQL_%date%.tar"
:: 删除3天前的备份文件
forfiles /p "D:\backup" /s /m *.* /d -3 /c "cmd /c del @path"
pause
```
说明:
- `pg_dump.exe`是postgreSQL的备份工具
- `-Ft`参数表示使用tar格式备份数据库
- `-b`参数表示备份二进制文件
- `-U postgres`表示使用postgres用户连接数据库
- `-f`参数表示指定备份文件的路径
- `postgres`是数据库名
- `winrar.exe`是WinRAR的可执行文件
- `a`参数表示执行压缩操作
- `-afzip`参数表示使用zip格式压缩文件
- `-r`参数表示递归压缩子目录
- `forfiles`命令用于删除指定时间前的文件
- `/p`参数指定文件的路径
- `/s`参数表示递归处理子目录
- `/m`参数指定文件匹配模式
- `/d`参数指定创建时间在多少天前的文件
- `/c`参数指定执行的命令
- `del @path`表示删除当前文件
运行此批处理文件将自动备份postgreSQL数据库,并压缩备份文件,并
### 回答2:
可以使用以下批处理脚本来完成该任务:
```batch
@echo off
setlocal
set "source=D:\postgreSQL\db" // 设置源目录路径
set "destination=D:\backup" // 设置备份目录路径
set "timestamp=%date:~-4%-%date:~3,2%-%date:~0,2%" // 获取当前日期,格式为yyyy-mm-dd
cd /d "%source%"
echo 备份 PostgreSQL 数据库...
pg_dump -U postgres -F t -f "%destination%\backup_%timestamp%.tar" dbname
echo 压缩备份文件...
"C:\Program Files\WinRAR\rar.exe" a -r -m5 -afzip "%destination%\backup_%timestamp%.zip" "%destination%\backup_%timestamp%.tar"
echo 删除超过3天的备份文件...
forfiles /p "%destination%" /s /m backup*.zip /d -3 /c "cmd /c del @path"
echo 备份和压缩完成。
pause
```
解释说明:
1. 首先,将 `source` 变量设置为 postgreSQL 数据库所在的目录(通常是 `D:\postgreSQL\db`),将 `destination` 变量设置为备份文件存放的目录(例如 `D:\backup`)。
2. 获取当前日期,并将其格式化为 `yyyy-mm-dd` 的形式,用于创建唯一的备份文件名。
3. 进入 `source` 目录,然后使用 `pg_dump` 命令备份 postgreSQL 数据库,生成名为 `backup_日期.tar` 的文件。
4. 使用 WinRAR 压缩命令将备份文件压缩成 `backup_日期.zip` 的压缩文件。
5. 使用 `forfiles` 命令删除备份目录下超过3天的文件,该命令会搜索指定目录下的 `backup*.zip` 文件,并删除创建日期超过3天的文件。
6. 显示完成消息,并暂停脚本以便查看。
请注意,WinRAR 的安装路径需要根据实际情况进行修改。
### 回答3:
编写一个批处理脚本来备份D盘上的PostgreSQL数据库到D盘的backup目录,并使用Winrar压缩备份文件,最后删除/backup目录下创建时间超过3天的文件。
@echo off
setlocal enabledelayedexpansion
REM 设置备份目录和数据库名称
set backup_dir=D:\backup
set database_name=your_database_name
REM 创建备份目录
if not exist %backup_dir% mkdir %backup_dir%
REM 备份数据库到备份目录
pg_dump -U postgres -F c -b -v -f %backup_dir%\%database_name%_%date:~-4,4%%date:~-10,2%%date:~-7,2%.bak %database_name%
REM 压缩备份文件
cd /d "%backup_dir%"
for /R %%A in (*.bak) do (
Winrar a -r -m5 -t %%~nA.rar %%A
del /q %%A
)
REM 删除超过3天的备份文件
forfiles /p "%backup_dir%" /s /d -3 /c "cmd /c if @isdir==FALSE del /q @file"
echo 完成备份和压缩。
pause
解释说明:
1. 首先,我们将备份目录和数据库名称设置为变量。
2. 使用`mkdir`命令创建备份目录(如果不存在)。
3. 使用`pg_dump`命令将数据库备份为一个.bak文件,并将其保存在备份目录中,文件名包含当前日期。
4. 使用`cd`命令切换到备份目录。
5. 使用for循环遍历备份目录下的所有.bak文件,并使用Winrar命令将其压缩成.rar文件,压缩级别设为5,并删除原始的.bak文件。
6. 使用`forfiles`命令删除备份目录中创建时间超过3天的文件(不包括子目录)。命令中的`del /q`用于静默删除文件。
7. 输出完成备份和压缩的消息,并使用`pause`命令在脚本执行完毕后暂停。
请注意,上述脚本中的“your_database_name”应替换为实际的数据库名称,确保PostgreSQL的可执行文件(如pg_dump)已添加到系统路径中。
阅读全文