Отсев баз через source.exclude_databases

list_databases() прячит базы по массиву строк: подстрока без регистра
или маска со * ? [. Фильтр — единственное место рождения списка, поэтому
одинаков для меню, пульта и list; явное имя в CLI не трогает.
This commit is contained in:
2026-08-20 06:02:55 +03:00
parent 9404d1dd08
commit 975934373b
5 changed files with 65 additions and 1 deletions
+8
View File
@@ -142,6 +142,7 @@ python pg_stand_sync.py restore dumps/zpas-20260820-031332.dump
| `dump_dir` | `dumps` | куда складывать дампы (относительный путь — от каталога скрипта) |
| `keep_dumps` | `5` | сколько последних дампов хранить, `0` — не чистить |
| `source.maintenance_database` | `postgres` | база, к которой подключаться для чтения списка баз |
| `source.exclude_databases` | `[]` | массив строк: базы, которые не показывать в списках |
| `source.password_env` | — | имя переменной окружения с паролем вместо `password` в файле |
| `target.database` | `null` | имя локальной базы; `null` — как на стенде |
| `target.recreate` | `true` | DROP + CREATE локальной базы перед восстановлением |
@@ -150,6 +151,13 @@ python pg_stand_sync.py restore dumps/zpas-20260820-031332.dump
| `restore.exit_on_error` | `false` | падать на первой ошибке восстановления |
| `post_restore_sql` | `[]` | список SQL, выполняемых в целевой базе после восстановления |
```json
"exclude_databases": ["_old", "keycloak", "*_tmp"]
```
Строка без спецсимволов — подстрока (регистр не важен), со `*`, `?` или `[` — маска.
Фильтр действует только на списки: базу, названную прямо (`sync zpas_old`), он не прячет.
Пароль ищется в три шага: `password` в конфиге → переменная окружения из `password_env`
запрос с терминала (один раз за запуск, ввод скрыт). В неинтерактивном запуске третьего шага
нет — либо `password_env`, либо `pgpass.conf`. Пароль всегда уходит в дочерний процесс через