2025-12-26 18:13:26 +01:00
from __future__ import annotations
import argparse
import os
2025-12-28 22:12:31 +01:00
2025-12-26 18:13:26 +01:00
def parse_args ( ) - > argparse . Namespace :
dirname = os . path . dirname ( __file__ )
default_databases_csv = os . path . join ( dirname , " databases.csv " )
p = argparse . ArgumentParser ( description = " Backup Docker volumes. " )
p . add_argument (
" --compose-dir " ,
type = str ,
required = True ,
help = " Path to the parent directory containing docker-compose setups " ,
)
p . add_argument (
2026-07-12 18:19:20 +02:00
" --hard-restart-projects " ,
2026-07-12 14:53:13 +02:00
nargs = " * " ,
default = [ ] ,
help = " Compose dir names that require ' docker-compose down && up -d ' (default: none; pass e.g. ' mailu ' under compose where the DB cannot be backed up hot) " ,
2025-12-26 18:13:26 +01:00
)
p . add_argument (
" --repo-name " ,
2025-12-28 22:12:31 +01:00
default = " backup-docker-to-local " ,
2025-12-26 18:13:26 +01:00
help = " Backup repo folder name under <backups-dir>/<machine-id>/ (default: git repo folder name) " ,
)
p . add_argument (
" --databases-csv " ,
default = default_databases_csv ,
help = f " Path to databases.csv (default: { default_databases_csv } ) " ,
)
p . add_argument (
" --backups-dir " ,
2026-07-12 14:53:13 +02:00
required = True ,
help = " Backup root directory (e.g. /var/lib/backup/) " ,
2025-12-26 18:13:26 +01:00
)
p . add_argument (
" --database-containers " ,
nargs = " + " ,
required = True ,
help = " Container names treated as special instances for database backups " ,
)
p . add_argument (
" --images-no-stop-required " ,
nargs = " + " ,
required = True ,
2026-07-12 18:19:20 +02:00
help = " Exact image references (repo:tag, incl. any registry prefix) whose containers must not be stopped during file backup " ,
2025-12-26 18:13:26 +01:00
)
p . add_argument (
" --images-no-backup-required " ,
nargs = " + " ,
default = [ ] ,
2026-07-12 18:19:20 +02:00
help = " Exact image references (repo:tag, incl. any registry prefix) for which no backup should be performed " ,
2025-12-26 18:13:26 +01:00
)
p . add_argument (
" --everything " ,
action = " store_true " ,
help = " Force file backup for all volumes and also execute database dumps (like old script) " ,
)
p . add_argument (
" --shutdown " ,
action = " store_true " ,
help = " Do not restart containers after backup " ,
)
2026-01-10 18:40:22 +01:00
2025-12-26 18:13:26 +01:00
p . add_argument (
2025-12-29 08:28:23 +01:00
" --dump-only-sql " ,
2025-12-26 18:13:26 +01:00
action = " store_true " ,
2025-12-29 08:28:23 +01:00
help = (
" Create database dumps only for DB volumes. "
" File backups are skipped for DB volumes if a dump succeeds, "
" but non-DB volumes are still backed up. "
" If a DB dump cannot be produced, baudolo falls back to a file backup. "
) ,
2025-12-26 18:13:26 +01:00
)
return p . parse_args ( )