Документация · HTTP API

Первый бэкап.
За несколько шагов.

Создайте проект в кабинете, сохраните ключ загрузки и отдельный ключ восстановления. Отправляйте готовый архив — сервис не создаёт дамп базы вместо вашего приложения.

В ранней версии доступен HTTP API. S3-совместимый адрес загрузки пока не реализован.

1. Подготовьте файл

Для отправки нужны размер файла и SHA-256. Ниже пример для Linux с curl и jq. В переменной BASE_URL укажите адрес своего экземпляра сервиса.

export BASE_URL="https://api.autobackup.me"
read -rsp "Ключ загрузки: " UPLOAD_TOKEN; echo
FILE="database.dump"
SIZE=$(wc -c < "$FILE" | tr -d ' ')
SHA=$(sha256sum "$FILE" | cut -d ' ' -f 1)
NAME=$(basename "$FILE")

2. Зарегистрируйте бэкап

Для каждой новой копии используйте новый ключ идемпотентности. При повторной отправке того же файла сохраните исходный ключ: это не создаст дубликат.

REQUEST_KEY="$(date -u +%Y%m%dT%H%M%SZ)-$SHA"
BODY=$(jq -n --arg name "$NAME" --arg sha "$SHA" \
  --arg key "$REQUEST_KEY" --argjson size "$SIZE" \
  '{name:$name,size:$size,sha256:$sha,idempotency_key:$key}')
ID=$(curl --fail-with-body -sS "$BASE_URL/v1/backups" \
  -H "Authorization: Bearer $UPLOAD_TOKEN" \
  -H 'Content-Type: application/json' -d "$BODY" | jq -er '.id')

3. Загрузите содержимое

curl --fail-with-body -sS -X PUT \
  "$BASE_URL/v1/backups/$ID/content" \
  -H "Authorization: Bearer $UPLOAD_TOKEN" \
  -H 'Content-Type: application/octet-stream' \
  --data-binary "@$FILE"

Ответ 202 означает, что файл принят. Фоновый обработчик доставит его на площадки. До этого момента бэкап ещё не имеет всех независимых копий.

4. Проверьте результат

curl --fail-with-body -sS "$BASE_URL/v1/backups/$ID" \
  -H "Authorization: Bearer $UPLOAD_TOKEN" | jq

protected — все копии проверены. replicating — идёт доставка. degraded — одна из площадок требует повторной попытки. Статус виден и в кабинете.

5. Восстановите файл

В кабинете выберите бэкап и нажмите «Восстановить». Введите отдельный ключ восстановления. Сервис проверит доступную копию и начнёт скачивание. Через API:

read -rsp "Ключ восстановления: " RECOVERY_TOKEN; echo
curl --fail-with-body -sS \
  "$BASE_URL/v1/recovery/backups/$ID/content" \
  -H "Authorization: Bearer $RECOVERY_TOKEN" \
  -o restored.dump

Храните ключ восстановления отдельно от сервера, отправляющего бэкапы. Ключ загрузки не даёт права скачивать копии.

Полная схема API ↗ Открыть кабинет

S3-вход · закрытая бета

В проекте откройте «S3-ключи» и сохраните отдельные комплекты для загрузки и восстановления.

Endpoint: https://api.autobackup.me. Region: us-east-1. Bucket — UUID вашего проекта. Используйте path-style и Signature V4.

# Настройте профиль autobackup-upload через aws configure.
aws configure set region us-east-1 --profile autobackup-upload
aws configure set s3.addressing_style path --profile autobackup-upload
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required

aws --profile autobackup-upload --endpoint-url https://api.autobackup.me \
  s3 cp database.dump s3://PROJECT_ID/daily/database.dump

# Для скачивания настройте отдельный профиль с recovery-ключами.
aws --profile autobackup-recovery --endpoint-url https://api.autobackup.me \
  s3 cp s3://PROJECT_ID/daily/database.dump restored.dump

Для rclone: тип S3, provider Other, endpoint как выше, region us-east-1, force_path_style=true. Используйте rclone copy, не sync с удалением.

Поддерживаются PutObject, HeadObject, GetObject (включая Range и versionId), ListObjects/V2, ListBuckets и multipart: Create, UploadPart, ListParts, ListMultipartUploads, Complete, Abort.

Ограничения беты: файл до 1 ГБ; до 20 незавершённых multipart-загрузок на проект; срок незавершённой загрузки — 24 часа. Новый PUT с тем же именем сохраняет новую версию. Все версии расходуют квоту. Удаление, S3 lifecycle, ACL, Object Lock, presigned URL, aws-chunked trailers и серверное копирование пока недоступны.

Успешный PUT означает, что файл принят на диск входного сервера. Защита тремя копиями подтверждается отдельно в кабинете. Скачивание доступно после проверки хотя бы одной копии. Это закрытая бета на одном входном сервере, без SLA и гарантии доступности при его отказе.