Skip to content

πŸ’Ύ Π‘Π΅ΠΊΠ°ΠΏΡ‹ (Π΄Π΅ΠΌΠΎΠ½) ​

πŸ“Œ ОписаниС ​

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±Π΅ΠΊΠ°ΠΏΠΎΠ² Π½Π° Π½ΠΎΠ΄Π΅: созданиС, восстановлСниС ΠΈ ротация Π±Π΅ΠΊΠ°ΠΏΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ расписания ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° (πŸ’Ύ features/backups), Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· CLI (asc backup ...) β€” Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

🎯 Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ использования ​

  • asc backup create <app> β€” Π±Π΅ΠΊΠ°ΠΏ прилоТСния Π² настроСнныС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ local), Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ β€” --storage <имя> (ΠΌΠΎΠΆΠ½ΠΎ нСсколько Ρ€Π°Π·).
  • asc backup restore <app> <backup-id> β€” восстановлСниС; ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ остановлСно (дСструктивно: замСняСт repository, config ΠΈ data).
  • asc backup list <app> [--storage <имя>] β€” Π±Π΅ΠΊΠ°ΠΏΡ‹ прилоТСния Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΎΡ‚ старых ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ.
  • asc backup prune <app> --keep <n> [--storage <имя>] β€” Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ старыС Π±Π΅ΠΊΠ°ΠΏΡ‹ свСрх n (ротация Ρ‚Π°ΠΊΠΆΠ΅ выполняСтся автоматичСски послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ create β€” ΠΏΠΎ настройкС keep самого прилоТСния).
  • asc backup storage add|list|remove β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌ, ΠΊΡƒΠ΄Π° ΠΈΠ΄ΡƒΡ‚ Π±Π΅ΠΊΠ°ΠΏΡ‹; asc app settings <app> (катСгория backups) β€” Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· этих Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ бСкапится ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, сколько ΠΊΠΎΠΏΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ с ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ (расписаниС исполняСт Π΄Π΅ΠΌΠΎΠ½, см. ⏰ scheduler).

πŸ—οΈ ВСхничСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ​

Π§Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π±Π΅ΠΊΠ°ΠΏ ​

Архив (tar.gz) ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² repository/, config/ ΠΈ data/ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° прилоТСния β€” всё, ΠΊΡ€ΠΎΠΌΠ΅ meta.json (ΠΎΠ½ пСрСсоздаётся ΠΏΡ€ΠΈ восстановлСнии, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ 🧬 ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ). asc.backup.yaml Π² ΠΊΠΎΡ€Π½Π΅ рСпозитория ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π°:

yaml
exclude:
  - data/cache/**
  - repository/vendor

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ β€” ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° прилоТСния, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ * (любая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСгмСнта ΠΏΡƒΡ‚ΠΈ), ** (любая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ /) ΠΈ ? (ΠΎΠ΄ΠΈΠ½ символ); ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈ всё, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ β€” ΠΊΠ°ΠΊ Π² .gitignore. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π±Π΅ΠΊΠ°ΠΏ Π½Π΅ замСняСт ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°ΠΌΠΏ Π‘Π”) β€” pre/post-Ρ…ΡƒΠΊΠΈ Π±Π΅ΠΊΠ°ΠΏΠ° β€” Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚.

Π’Ρ‹Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π΅ΠΊΠ°ΠΏΠ° (DMN-118). CreateBackupRequest (REST: POST /v1/apps/{id}/backups) ΠΈ Π·Π°Π΄Π°Ρ‡Π° расписания ScheduleBackupJob ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ списки include ΠΈ exclude Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ синтаксисС. НСпустой include суТаСт Π°Ρ€Ρ…ΠΈΠ² Π΄ΠΎ ΡΠΎΠ²ΠΏΠ°Π²ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² (шаблон ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π±Π΅Ρ€Ρ‘Ρ‚ всё Π²Π½ΡƒΡ‚Ρ€ΠΈ; ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ всё Ρ€Π°Π²Π½ΠΎ обходятся, поэтому **/*.db Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° любой Π³Π»ΡƒΠ±ΠΈΠ½Π΅); exclude примСняСтся ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅Π³ΠΎ ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… asc.backup.yaml β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСгда сильнСС. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΎΠ±Ρ€Π΅Π·Π°ΡŽΡ‚ΡΡ ΠΏΠΎ краям, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ / отбрасываСтся; Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ, сСгмСнты .. ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ слСши ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‚ΡΡ с InvalidArgument, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ спискС β€” Π½Π΅ большС 64 шаблонов. Π”Π΅ΠΌΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π·Π½Π°Π΅Ρ‚ этих ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΈ Π±Π΅ΠΊΠ°ΠΏΠΈΡ‚ всё.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Ρ‚Ρ€Π΅ΠΉΡ‚ BackupStorage, src/daemon/backup/storage.rs) ​

  • local β€” всСгда доступно, Π±Π΅Π· настройки: ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (<data_dir>/backups, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ /var/lib/asc/backups). ЕдинствСнный Ρ‚ΠΈΠΏ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСгодня Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пСрСносит.
  • s3 β€” S3-совмСстимоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (AWS S3, MinIO, Backblaze B2, Wasabi, Yandex Object Storage…), DMN-115: asc backup storage add <имя> --type s3 --bucket … --region … [--endpoint …] --access-key … --secret-key … [--prefix …]. Настоящий пСрСнос (src/daemon/backup/s3.rs): подпись Signature V4 Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (HMAC-SHA256 ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ sha2), Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ HTTPS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ureq Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ rustls/ring, Ρ‡Ρ‚ΠΎ ΠΈ API Π΄Π΅ΠΌΠΎΠ½Π°. Архивы Π΄ΠΎ 64 ΠœΠΈΠ‘ β€” ΠΎΠ΄Π½ΠΈΠΌ PUT, ΠΊΡ€ΡƒΠΏΠ½Π΅Π΅ β€” multipart (части ΠΎΡ‚ 16 ΠœΠΈΠ‘, ΠΏΡ€ΠΈ сбоС Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° отмСняСтся); Ρ‚Π΅Π»ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ пСрСдаётся ΠΊΠ°ΠΊ UNSIGNED-PAYLOAD (Π°Ρ€Ρ…ΠΈΠ² Π½Π΅ читаСтся Π΄Π²Π°ΠΆΠ΄Ρ‹), ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ запросы ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ…Π΅Ρˆ Ρ‚Π΅Π»Π°. АдрСсация β€” virtual-hosted для AWS, path-style для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… (Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²Ρ‹Π±ΠΎΡ€, Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹); листинг β€” ListObjectsV2 с ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ, Π² Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ Ρ€ΠΎΠ²Π½ΠΎ этого прилоТСния (demo Π½Π΅ ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ demo-2). Ошибки нСсут ΠΊΠΎΠ΄ S3 (SignatureDoesNotMatch, NoSuchBucket…), Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° β€” Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹.
  • ftp / sftp β€” Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ хранятся ΠΊΠ°ΠΊ источники рССстра β€” систСмный список /etc/asc/backup-storages.toml, управляСтся root ΠΈ Π²ΠΈΠ΄Π΅Π½ всСм, плюс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ~/.config/asc/backup-storages.toml; Ρ„Π°ΠΉΠ» 0600, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ содСрТит ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅), Π½ΠΎ пСрСнос ΠΏΠΎΠΊΠ° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ β€” любая опСрация Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎΒ».
  • managed_by Ρƒ записи Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ»Π°Π΄Ρ‘Ρ‚ свои S3-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ platform-<id> с managed_by = "platform" (прСфикс ΠΊΠ»ΡŽΡ‡Π΅ΠΉ <path_prefix>/asc-backups/<id Π½ΠΎΠ΄Ρ‹>) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ; запись ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
  • Имя настроСнного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ local (Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ), ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Π΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ систСмноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ πŸ“¦ источников рССстра.

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π±Π΅ΠΊΠ°ΠΏΠΎΠ² (asc app settings β†’ backups) ​

Π₯ранится ΠΏΠΎΠ΄ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ $backup Π² config/settings.json, рядом с $quota/$start_command (Ρ‚Π° ΠΆΠ΅ конвСнция, DMN-017/030): storages (мноТСствСнный Π²Ρ‹Π±ΠΎΡ€, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅), keep (сколько ΠΊΠΎΠΏΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” обрСзаСтся автоматичСски сразу послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ create), schedule (daily@HH:MM, просто HH:MM ΠΈΠ»ΠΈ cron-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· пяти ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΈΠ½ час дСнь мСсяц дСнь_Π½Π΅Π΄Π΅Π»ΠΈ; Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ провСряСт синтаксис). schedule исполняСтся ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ Π΄Π΅ΠΌΠΎΠ½Π° (⏰ scheduler, DMN-012): Ρ€Π°Π· Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΎΠ½ свСряСт ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½ΠΎΠ΄Ρ‹ ΠΈ запускаСт подошСдшиС Π±Π΅ΠΊΠ°ΠΏΡ‹ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Π΅Ρ‘ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ keep β€” Π΄Π΅ΠΌΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ (asc service install ΠΈΠ»ΠΈ asc serve). asc backup create <app> Π±Π΅Π· --storage ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈΠ· ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Π° ΠΏΡ€ΠΈ пустой ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ local.

Листинг ΠΈ API (BackupService, capability backups) ​

Листинг ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ имя Π°Ρ€Ρ…ΠΈΠ²Π°, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ врСмя создания (ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ <app>-<unix-ts>.tar.gz); asc backup list ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ имя ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π‘Π΅ΠΊΠ°ΠΏ Π² нСсколько Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ собираСт Π°Ρ€Ρ…ΠΈΠ² ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ отправляСт Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ β€” всС ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ снимка; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ. ИмСна Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² Π½Π° восстановлСниС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ (validate_backup_name): ΠΏΡƒΡ‚ΡŒ с / ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΠ² Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ имя ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² ΠΏΡƒΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

API: ListBackupStorages, UpsertBackupStorage (S3 ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, с managed_by), RemoveBackupStorage, ListBackups (ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ всС, ΠΎΠ΄Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ»ΠΈ всС; нСдоступноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” Π² errors, Π° Π½Π΅ ошибка Π²Ρ‹Π·ΠΎΠ²Π°), CreateBackup, RestoreBackup (stop_app β€” ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ), DeleteBackup. REST-Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ: GET /v1/backups, GET /v1/backups/storages, PUT/DELETE /v1/backups/storages/{name}, POST /v1/apps/{id}/backups, POST /v1/apps/{id}/backups/restore, DELETE /v1/apps/{id}/backups/{storage}/{name} (πŸ”Œ api). Π­Ρ‚ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° (πŸ’Ύ features/backups).

ВосстановлСниС ​

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΠ² Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ замСняСт repository/, config/ ΠΈ data/ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° прилоТСния (ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ) β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² точности соотвСтствуСт Π±Π΅ΠΊΠ°ΠΏΡƒ, Π° Π½Π΅ слиянию с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅. CLI отказываСтся Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ прилоТСния.

πŸ”— БвязанныС Π·Π°Π΄Π°Ρ‡ΠΈ ​

DMN-009, DMN-012, DMN-115, DMN-118, NODE-049, BE-005 Π² ROADMAP.md.

РаспространяСтся ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ MIT.