====== пошаговая настройка RESTIC ====== инициализация - docker run --rm -e RESTIC_PASSWORD=backuppass -e RESTIC_REPOSITORY=/repo -v /var/backup/restic:/repo restic/restic init Добавить файл docker run --rm -e RESTIC_PASSWORD=backuppass -e RESTIC_REPOSITORY=/repo -v /var/backup/restic:/repo -v /tmp/ac.fbk:/data/ac.fbk restic/restic backup /data/ac.fbk если надо добавить старые файлы с таким форматом ac_2025-07-31.fbk.gz ac_2025-08-21.fbk.gz разовое добавление docker run --rm \ -e RESTIC_PASSWORD=backuppass \ -e RESTIC_REPOSITORY=/repo \ -v /var/backup/restic:/repo \ -v /var/backup:/data \ restic/restic backup /data/ac_2025-11-09.fbk.gz \ --tag ac \ --time "2025-11-09 23:59:00" скопом docker run --rm \ --entrypoint /bin/sh \ -e RESTIC_PASSWORD=backuppass \ -e RESTIC_REPOSITORY=/repo \ -v /var/backup/restic:/repo \ -v /var/backup:/data \ restic/restic -c ' for f in /data/ac_*.fbk.gz; do d=$(echo "$f" | sed -E "s#.*/ac_([0-9]{4}-[0-9]{2}-[0-9]{2}).*#\1#") echo "Adding $f as $d" restic backup "$f" --tag ac --time "${d} 23:59:00" done ' статы docker run --rm \ -e RESTIC_PASSWORD=backuppass \ -e RESTIC_REPOSITORY=/repo \ -v /var/backup/restic:/repo \ restic/restic snapshots docker run --rm \ -e RESTIC_PASSWORD=backuppass \ -e RESTIC_REPOSITORY=/repo \ -v /var/backup/restic:/repo \ restic/restic stats #!/bin/bash set -euo pipefail set -o pipefail RESTIC_PASSWORD="backuppass" RESTIC_REPOSITORY="/repo" RESTIC_VOLUME="/var/backup/restic" # тут лежит restic-репо на хосте FIREBIRD_CONTAINER="firebird5" echo "$(date) start backup" # 1) Делаем gbak внутри контейнера firebird и сразу стримим в restic docker exec \ -e ISC_USER=SYSDBA \ -e ISC_PASSWORD=sysdba \ "$FIREBIRD_CONTAINER" \ gbak -b -g ac stdout | \ docker run --rm -i \ -e RESTIC_PASSWORD="$RESTIC_PASSWORD" \ -e RESTIC_REPOSITORY="$RESTIC_REPOSITORY" \ -v "$RESTIC_VOLUME":/repo \ restic/restic backup --stdin --stdin-filename ac.fbk --tag ac echo "$(date +%X) restic backup ok" # 2) Политика хранения (daily/weekly/monthly/yearly) docker run --rm \ -e RESTIC_PASSWORD="$RESTIC_PASSWORD" \ -e RESTIC_REPOSITORY="$RESTIC_REPOSITORY" \ -v "$RESTIC_VOLUME":/repo \ restic/restic forget \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 12 \ --keep-yearly 3 >/dev/null 2>&1 echo "$(date +%X) retention applied" # 3) Чистим репозиторий (физически удаляем лишние блоки) docker run --rm \ -e RESTIC_PASSWORD="$RESTIC_PASSWORD" \ -e RESTIC_REPOSITORY="$RESTIC_REPOSITORY" \ -v "$RESTIC_VOLUME":/repo \ restic/restic prune echo "$(date +%X) prune done" # 4) Sweep базы внутри контейнера Firebird docker exec \ -e ISC_USER=SYSDBA \ -e ISC_PASSWORD=sysdba \ "$FIREBIRD_CONTAINER" \ gfix -sweep localhost:ac echo "$(date +%X) sweep ok"