该脚本实现备份docker中的postgresql数据,并且把备份文件拷贝到宿主机
配合linux定时任务,可以实现定时备份
#!/bin/bash echo "开始执行 PostgreSql 数据库thingsboard的备份!" echo "backup ing -------------------" nowtime=$(date +%F) PGPASSWORD=postgres # 文件名称 FILENAME=thingsboard_$nowtime.backup #这里面的postgres12是容器名称 docker exec -i postgres12 /bin/bash -c 'PGPASSWORD='$PGPASSWORD' /usr/bin/pg_dump -Fc -h localhost -p 5432 -U postgres thingsboard > /home/'$FILENAM E'' echo "backup end -------------------" echo "生成文件 $FILENAME" echo "从docker容器复制文件到宿主机" sudo chmod -R 777 /home/docker-mapping/postgres/backup docker cp 'postgres12:/home/'$FILENAME'' '/home/docker-mapping/postgres/backup/backup_data/'$FILENAME'' echo "删除docker容器里面的备份文件" docker exec -i postgres12 /bin/bash -c 'cd /home&&rm '$FILENAME'' echo "数据库备份结束!" exit;
附上window系统的备份脚本,注意window的脚本后缀是bat,在cmd直接输入xxx.bat就可以了
@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
::数据库密码
set PGPASSWORD=postgres
::pg_dump.exe 所在目录
SET PGPATH=D:PostgreSQL13bin
::备份文件存放地址
SET SVPATH=E:viot-backup
::数据库database
SET PRJDB=thingsboard
::用户
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
SET DBDUMP=%PRJDB%_%d%.backup
@ECHO OFF
%PGPATH%pg_dump -Fc -h 127.0.0.1 -U postgres %PRJDB% > %SVPATH%%DBDUMP%
echo Backup Taken Complete %SVPATH%%DBDUMP%



