#!/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."