Скачивание резервных копий
rdc backup download хранит копию зашифрованного образа репозитория в локальном каталоге или на внешнем диске. Копия представляет собой тот же шифротекст, что лежит на машине, поэтому по пути ничего не расшифровывается. Учётные данные, открывающие образ, остаются в конфигурации, так что надёжнее всего сохранить их через регистрацию в config storage. Без этих данных образ не открыть.
Источников два. По умолчанию используется работающая машина. Второй источник, хранилище резервных копий, выбирается флагом --store.
Скачивание с машины
rdc backup download mail@prod --to /mnt/usb
--to указывает существующий каталог с правом записи. Он никогда не создаётся, поэтому диск нужно смонтировать заранее. Образ попадает в <machine>/<name>.<tag>.img, рядом с ним создаётся файл .state.json.
Каждый запуск делает свежий снимок репозитория, который существует только на время передачи, отправляет различия через rsync и сравнивает sha256 результата со снимком на машине.
| Флаг | Действие |
|---|---|
--all -m <machine> | Скопировать все grand-репозитории, размещённые на машине |
--include-forks | Вместе с --all скопировать и форки |
--bwlimit <rate> | Ограничить пропускную способность сети, например 100Mbps или 12.5M |
--checkpoint | Сделать checkpoint и заморозить репозиторий перед снимком (горячее резервное копирование) |
--retries <n> | Повторные попытки внутри запуска после сбоя сети (по умолчанию 3) |
--skip-verify | Пропустить сравнение sha256; собственная контрольная сумма rsync всё равно выполняется |
--skip-space-check | Предупредить вместо отказа, если на целевом диске может не хватить места |
Обновление копии
Повторный запуск обновляет существующий образ на месте с помощью дельты rsync. Еженедельный запуск отправляет только изменившееся, а целевому диску нужно место под одну копию образа, а не под две. Перед началом запуска свободное место сравнивается с размером образа, а --skip-space-check превращает отказ в предупреждение.
Прерванные запуски и возобновление
Файл состояния хранит status. Значение равно incomplete с момента до записи первого байта и до проверки запуска, а образ со статусом incomplete непригоден к использованию. Ctrl-C, потеря соединения или принудительно завершённый процесс оставляют его в таком состоянии. Повторный запуск той же команды возобновляет передачу, и отправляются только различия. Команда завершается с кодом 0, когда статус становится complete.
Требования
Для передачи на этом компьютере нужен rsync версии 3.1.3 или новее, запасного варианта через SFTP нет. Дистрибутивы Linux поставляют его в комплекте. В macOS команда brew install rsync заменяет встроенный openrsync, который не справляется с передачей. В Windows устанавливается MSYS2 с пакетом rsync либо используется приложение для рабочего стола.
Внешние диски
Что поместится, определяет файловая система целевого диска.
- FAT32 не вмещает файл больше 4 GiB, и команда отказывается от запуска.
- exFAT без поддержки разреженных файлов хранит образ в полном кажущемся размере, поэтому проверка свободного места учитывает именно его.
- Снимок copy-on-write, сделанный локально для целевого диска (btrfs, ZFS, APFS), сохраняет прежние версии образа. Каждое обновление на месте тогда стоит изменённых блоков сверх старых.
Скачивание из хранилища резервных копий
export REDIACC_TOKEN=<api-token>
rdc backup download mail --store --to /mnt/usb
--store собирает образ прямо из хранилища чанков, без участия машины. Токену в REDIACC_TOKEN нужны scope backup:read и backup:restore. Вход через CLI никогда не даёт backup:restore, поэтому токен создаётся на странице API Tokens портала. Он должен принадлежать команде и быть создан действующим владельцем или администратором организации.
--store принимает ровно одно имя репозитория. Флаги -m, --checkpoint, --all, --include-forks, --bwlimit, --retries, --skip-verify и --skip-space-check с ним не используются: у загрузки из хранилища своё возобновление, и она проверяет каждый чанк.
Образ записывается в <dir>/<name>.<tag>.img. Прерванная загрузка сохраняет частичную копию, и та же команда продолжает с неё.
Выбор снимка через --at
По умолчанию загружается самый новый снимок. --at <time|snapshot> выбирает другой: либо время в ISO 8601, либо идентификатор снимка. Флаг действует только вместе с --store.
rdc backup download mail --store --to /mnt/usb --at 2026-10-01T00:00:00Z
На платформе, отличной от Linux, загруженный образ зашифрован и локально не открывается. Его отправляют на машину с Linux командой rdc backup upload.
Загрузка копии обратно
rdc backup upload /mnt/usb/prod/mail.latest.img --to prod --as mail-copy --up
rdc backup upload отправляет скачанный образ на машину и регистрирует его как новый репозиторий. Передача возобновляется после прерывания, а машина проверяет sha256 и заголовок LUKS, прежде чем разместить образ. Учётные данные берутся из файла состояния рядом с образом. Если этот файл утерян, --from-repo <name> указывает репозиторий, который их предоставляет.
| Флаг | Действие |
|---|---|
--as <name> | Имя нового репозитория (по умолчанию имя образа) |
--datastore <name> | Разместить образ в указанном datastore |
--from-repo <name> | Взять учётные данные и родословную, когда файл состояния непригоден |
--bwlimit <rate>, --retries <n> | Так же, как при скачивании |
--up | Запустить репозиторий после регистрации |
--skip-verify | Пропустить сравнение с sha256, записанным при скачивании |
Устаревшие снимки передачи
Принудительно завершённая передача может оставить свой снимок на машине. rdc machine status считает устаревшие снимки передачи в сводке по пулу, а rdc machine prune <machine> --dry-run их перечисляет. Команда rdc machine prune <machine> их удаляет.
О снимках в хранилище чанков см. Резервное копирование и восстановление.