- storage.js: абстракция хранилища с драйверами local и s3 (AWS SDK v3), ключи объектов совпадают с текущими путями /uploads/<файл>, поэтому схема БД и URL не меняются - docker-compose.yml: сервис s3 (SeaweedFS, том s3-data, API только на loopback), переменные S3_*/STORAGE_*, restart unless-stopped для app и db - docker-compose.minio.yml: оверрайд S3-сервиса на MinIO (образ из своего зеркала) - server.js/worker.js: чтение и запись файлов только через storage (отдача /uploads/*, миниатюры, share-файлы, zip-отчёты, enhance/apply/rollback, photo-worker), автосоздание бакета, глобальная персистенция загрузок multer - бэкап/восстановление и scripts/backup.sh, restore.sh — через scripts/storage-sync.js - scripts/migrate-to-s3.js: идемпотентная миграция uploads/ в бакет (--dry-run, --verify-only, --delete-local) - админка: блок «Хранилище» в системной информации - .env.example, README.md, AGENTS.md: описание драйверов, переменных и перехода на S3
26 lines
981 B
Bash
Executable File
26 lines
981 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Создаёт архив переноса: БД (dump) + фотографии (uploads).
|
|
# Использование: ./scripts/backup.sh
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
STAMP=$(date +%Y%m%d-%H%M%S)
|
|
mkdir -p backups
|
|
|
|
echo ">> Экспорт БД"
|
|
docker compose exec -T db pg_dump -U app -d whereldo | gzip > backups/db.sql.gz
|
|
|
|
echo ">> Экспорт файлов из хранилища"
|
|
rm -rf backups/_uploads
|
|
mkdir -p backups/_uploads
|
|
docker compose exec -T app rm -rf /tmp/whatido-export
|
|
docker compose exec -T app node scripts/storage-sync.js export /tmp/whatido-export
|
|
docker cp "whatido-app-1:/tmp/whatido-export/." "backups/_uploads/"
|
|
docker compose exec -T app rm -rf /tmp/whatido-export
|
|
rm -rf backups/_uploads/.thumbs
|
|
|
|
echo ">> Сборка архива"
|
|
tar -czf "backups/whatido-backup-$STAMP.tar.gz" -C backups db.sql.gz _uploads
|
|
rm -rf backups/_uploads backups/db.sql.gz
|
|
|
|
echo "Готово: backups/whatido-backup-$STAMP.tar.gz" |