65 lines
2.0 KiB
Bash
65 lines
2.0 KiB
Bash
#!/bin/bash
|
||
# Выгрузка только /mnt/backup/photos в Yandex Object Storage (S3) через restic.
|
||
# Тот же репозиторий, что и backup-restic-yandex.sh; фото вынесены в отдельный снимок (больше всего данных).
|
||
# Запускать на хосте Proxmox под root. Требуется тот же /root/.restic-yandex.env и /root/.restic-password.
|
||
# Cron: 0 1 * * * (01:00).
|
||
set -e
|
||
|
||
ENV_FILE="/root/.restic-yandex.env"
|
||
BACKUP_PATH="/mnt/backup/photos"
|
||
|
||
if [ "$(id -u)" -ne 0 ]; then
|
||
echo "Запускайте под root."
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -f "$ENV_FILE" ]; then
|
||
echo "Нет файла $ENV_FILE. Скопируйте restic-yandex-env.example и задайте ключи."
|
||
exit 1
|
||
fi
|
||
|
||
# shellcheck source=/dev/null
|
||
source "$ENV_FILE"
|
||
|
||
for var in RESTIC_REPOSITORY AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY; do
|
||
if [ -z "${!var}" ]; then
|
||
echo "В $ENV_FILE не задано: $var"
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
if [ -z "$RESTIC_PASSWORD_FILE" ]; then
|
||
RESTIC_PASSWORD_FILE="/root/.restic-password"
|
||
fi
|
||
if [ ! -f "$RESTIC_PASSWORD_FILE" ]; then
|
||
echo "Файл с паролем репозитория не найден: $RESTIC_PASSWORD_FILE"
|
||
exit 1
|
||
fi
|
||
|
||
export AWS_ACCESS_KEY_ID
|
||
export AWS_SECRET_ACCESS_KEY
|
||
export RESTIC_PASSWORD_FILE
|
||
export RESTIC_REPOSITORY
|
||
export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-ru-central1}"
|
||
|
||
if ! command -v restic >/dev/null 2>&1; then
|
||
echo "restic не установлен. Установите: apt install restic."
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -d "$BACKUP_PATH" ]; then
|
||
echo "Каталог $BACKUP_PATH не найден. Пропуск."
|
||
exit 0
|
||
fi
|
||
|
||
echo "Restic backup (photos): $BACKUP_PATH -> $RESTIC_REPOSITORY"
|
||
restic backup "$BACKUP_PATH" --quiet
|
||
|
||
echo "Restic forget (retention 3 daily, 2 weekly, 2 monthly)..."
|
||
restic forget --keep-daily 3 --keep-weekly 2 --keep-monthly 2 --prune --quiet
|
||
|
||
echo "Restic prune..."
|
||
restic prune --quiet
|
||
|
||
echo "Restic photos backup done."
|