инициализация -
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"