Как исправить скрипт Automated Backup для postgres [Окно]? - PullRequest
0 голосов
/ 07 мая 2019

Я посмотрел дубликат вопроса PostgreSQL: автоматическое резервное копирование в Windows и других источниках https://wiki.postgresql.org/wiki/Automated_Backup_on_Windows. Я попытался сделать простой пакетный скрипт для себя [например.Путь установки, настройка пароля ... и т. Д.], Чтобы сделать восстановление базы данных в будущем.Однако, похоже, что мой пакетный скрипт для резервного копирования базы данных не работает вообще.Я не могу понять, где моя ошибочная точка.

Вот мой пакетный скрипт для резервной базы данных postgres.

@echo off    
   SET PGPASSWORD=%Ech0-5910&123
   set root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\
   echo on  
   cd %root%
   echo on 
   pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb

Обновлен сценарий после ответа @Gerhard Barnard

@echo off    
  echo 192.168.1.161:5432:_wolfcom:postgres:R0m3o^%%Ech0-5910^&>"%APPDATA%\postgresql\pgpass.conf"
  set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
  cd /d "%root%"
  pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" _wolfcom
  pause

1 Ответ

0 голосов
/ 07 мая 2019

Ваш код должен заключать все пути в двойные кавычки, чтобы исключить пробелы.Помните, что cmd интерпретирует каждую работу с пробелом как новую команду.Нам нужно экранировать &, так как он станет физическим оператором в пакете, и, наконец, предпочтительнее использовать опцию /d при использовании cd в случае, если вы пришли с другой буквы диска:

@echo off    
 SET "PGPASSWORD=%Ech0-5910^&123"
 set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
 cd /d "%root%"
 pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb

Также обратите внимание, что вы никогда не используете пароль в своей команде pg_dump, поэтому вам также следует учесть это.Рекомендуется отредактировать

%APPDATA%\postgresql\pgpass.conf

и добавить

*:5432:*:username:password

для автоматизации этой части в вашем сценарии:

@echo off
  echo *:5432:*:postgres:%Ech0-5910^&123>""%APPDATA%\postgresql\pgpass.conf"
  set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
  cd /d "%root%"
  pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" testdb

Если dir не существуетсоздать его "%APPDATA%\postgresql"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...