[2026-10-23] eagle: personal/instructions/Выборочный бэкап Mac на Kraken.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-23 14:03:19 +06:00
1 parent c430b5d057
commit 32bb470055
1 file changed
+41 -14
@@ -11,19 +11,48 @@ tags:
---
# Выборочный бэкап Mac на Kraken
## Пересмотр решения (23 октября 2026)
## Выбор решения: исследование 23 октября 2026
**Arq 7 ошибочно был назван выбранным решением: он платный и закрытый, а исходный запрос предпочитал open source. Рекомендация Arq отозвана.** На Mac сейчас нет установленной и проверенной замены RsyncUI; рабочий автоматический бэкап не подтверждён.
**Выбранный кандидат — Backrest + restic на Mac, репозиторий по SFTP на Kraken. Это результат сравнения, а не заявление о готовом бэкапе: программа пока не установлена, полного запуска и пробного восстановления нет.** Предыдущее назначение платного Arq было ошибкой: исходный запрос предпочитал open source. Сравнение ниже не предполагает покупку лицензии.
| Вариант | Подтверждённые возможности | Ограничение для этой задачи |
|---|---|---|
| **Kopia** | Бесплатный open source (Apache-2.0); macOS-версия, SFTP/SSH, выбор источников, маски исключений, версионные зашифрованные снимки, расписание и восстановление. [Проект](https://github.com/kopia/kopia), [SFTP](https://kopia.io/docs/repositories/), [фильтры](https://kopia.io/docs/advanced/kopiaignore/), [расписание](https://kopia.io/docs/reference/command-line/common/policy-set/) | KopiaUI построен на Electron, то есть интерфейс не нативный SwiftUI. Для работы после закрытия окна нужен постоянно работающий процесс `kopia server start`, запускаемый как служба macOS; автономность такой конфигурации на этом Mac ещё не проверена. [Архитектура UI](https://github.com/kopia/kopia/blob/master/BUILD.md), [режим сервера](https://kopia.io/docs/reference/command-line/common/server-start/) |
| **Time Machine** | Встроен в macOS, сам выполняет версионный бэкап на SMB; Kraken уже имеет SMB share. [Apple: сетевой диск](https://support.apple.com/en-euro/guide/mac-help/mh15139/27/mac/27) | Нет исключений по маскам вроде `**/node_modules/` и `*.lock`; исключаются конкретные пути. Использует SMB, а не SSH/SFTP. [Apple: исключения](https://support.apple.com/en-au/guide/mac-help/-mh15622/mac) |
| **Keelhaven** | Бесплатный GPLv3, нативный SwiftUI, использует restic, SFTP, выбор папок, исключения и версии. [Исходники](https://github.com/shenxianpeng/keelhaven) | Планировщик работает внутри приложения; вход в систему запускает само приложение. После его закрытия бэкап не выполняется — повторяет ключевое ограничение RsyncUI. [Планировщик](https://github.com/shenxianpeng/keelhaven/blob/main/Keelhaven/Services/SchedulerService.swift), [автозапуск](https://github.com/shenxianpeng/keelhaven/blob/main/Keelhaven/Services/LoginItemService.swift) |
### Требования из исходной задачи
**Лучший найденный бесплатный вариант по функциям — Kopia, но он не выполняет требование о нативном интерфейсе macOS.** Если «нативный» означает штатное приложение Apple, подходит только Time Machine с потерей масок и SSH. Если означает работающий локально на Mac бэкап без .NET и платной лицензии, Kopia подходит как кандидат, но до установки, настройки службы, полного запуска и пробного восстановления не может считаться готовым решением.
Нужны выбор конкретных каталогов и файлов, исключения по маскам на любой глубине, передача на Kraken по SSH/SFTP, автономный запуск без открытого окна, история версий, расписание, проверка и восстановление. UI и open source предпочтительны; Duplicati уже отвергнут из-за .NET. Прежний RsyncUI не выполнил требование настоящего автономного бэкапа. Дополнительный анализ новых каталогов локальной MLX-моделью желателен, но не должен решать, выполняется ли очередной бэкап.
**Проверено на этой машине и Kraken:** macOS 26.7.1; у Time Machine нет назначенного диска, автоматический бэкап выключен. По SSH на `192.168.1.14` Kraken доступен, пользователь `kraken` может писать в существующий `/srv/dev-disk-by-uuid-6194539b-03e0-4f33-986b-4da09834e82f/backups/mbp-black/`, на диске свободно около 1.1 ТБ. Новый репозиторий Kopia потребует отдельной папки; старые `home/`, `system/`, `postgresql/` не удалять и не перезаписывать. VPN-адрес `10.99.1.2` при прямой проверке не ответил; доступ вне LAN не подтверждён. Существующие дампы PostgreSQL от 22 октября не обновляются автоматически. [PostgreSQL: SQL-дампы](https://www.postgresql.org/docs/17/backup-dump.html).
Под «нативностью» различаются два свойства: программа исполняется прямо на macOS без контейнера и .NET; интерфейс написан на SwiftUI/AppKit. Не найдено подтверждённого бесплатного продукта, который одновременно выполняет все требования и имеет SwiftUI-интерфейс вместе с независимой фоновой службой. Backrest удовлетворяет первому свойству, но его интерфейс вебовый.
### Реальные кандидаты
**Backrest + restic — первое место.** Backrest — GPL-3.0, сервис на Go с веб-интерфейсом React/TypeScript; restic — отдельный движок на Go. Официальный установщик создаёт launchd LaunchAgent на Mac, поэтому закрытие браузера не останавливает задания. Есть выбор нескольких исходных путей, маски исключений, расписание в интерфейсе, версии, ротация, проверки репозитория, просмотр и восстановление файлов. Restic передаёт данные по SFTP через штатный SSH-клиент и может использовать запись из ~/.ssh/config, включая alias Kraken; на Kraken достаточно SSH/SFTP, отдельный сервер не нужен. Репозиторий шифруется; пароль нужен для восстановления. Ограничение: штатный LaunchAgent пользователя стартует после входа в macOS, а не до него. Запуск после сна, Full Disk Access, все маски и соединение через существующий ProxyCommand требуют проверки на этой машине. [Backrest: исходники и установка](https://github.com/garethgeorge/backrest), [создание плана](https://garethgeorge.github.io/backrest/introduction/getting-started), [скрипт установки launchd](https://github.com/garethgeorge/backrest/blob/main/install.sh), [restic: SFTP и SSH config](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html), [restic: исключения и выбор файлов](https://restic.readthedocs.io/en/stable/040_backup.html).
**Kopia — второе место.** Бесплатная Apache-2.0, движок Go, интерфейс KopiaUI на Electron. Есть SFTP, выбор исходников, правила исключений, шифрованные версии, расписание и восстановление. Встроенный планировщик выполняет работающий процесс Kopia; чтобы закрыть KopiaUI и оставить бэкап, надо отдельно поставить kopia server start на автозапуск. Штатная установка на macOS не даёт такого готового независимого сервиса, поэтому здесь Backrest проще и ближе к исходному требованию. [Kopia](https://github.com/kopia/kopia), [сборка KopiaUI](https://github.com/kopia/kopia/blob/master/BUILD.md), [сервер](https://kopia.io/docs/reference/command-line/common/server-start/).
**Time Machine — лучший вариант, если обязательна именно встроенная система Apple.** macOS backupd работает без открытого UI и хранит версии на SMB-шаре Kraken. Стек — компоненты macOS и SMB; реализация закрытая. Нельзя перенести действующие маски вроде node_modules на любой глубине и *.lock: доступны исключения конкретных объектов. SSH/SFTP нет. Старый вариант на Kraken уже давал проблемы размера и доступности через VPN. [Apple: сетевое назначение](https://support.apple.com/en-euro/guide/mac-help/mh15139/27/mac/27), [Apple: исключения](https://support.apple.com/en-au/guide/mac-help/-mh15622/mac).
**UrBackup — автономная альтернатива при готовности установить сервер на Kraken.** Клиент/сервер с открытым кодом AGPL-3.0, ядро C++, клиентский интерфейс на wxWidgets, управление через веб-сервер. Поддерживает версии файлов и wildcard-исключения, клиент Mac работает службой. На Kraken придётся поставить UrBackup Server; существующий SFTP-каталог сам по себе назначением не станет. После периода прекращённой поддержки macOS выпущен новый клиент в 2026 году; совместимость с текущей macOS и защищёнными данными надо проверять отдельно. Из-за дополнительного сервера и другого сетевого протокола это запасной, а не первый выбор. [Исходники](https://github.com/uroni/urbackup_backend), [загрузки](https://www.urbackup.org/download.html), [история macOS](https://www.urbackup.org/2019/05/28/macos-announcement.html), [выпуск 2026](https://www.urbackup.org/2026/02/07/urbackup-client-2.5.29-macos.html).
**Vorta + Borg — хороший архивный движок, слабее по автономности здесь.** Vorta — GPL-3.0, Python/PyQt; Borg — Python/C. Есть интерфейс, маски, версии, шифрование и SSH. Планировщик находится в работающем приложении Vorta, а на Kraken должен быть установлен совместимый Borg для удалённого репозитория. [Vorta](https://github.com/borgbase/vorta), [Borg: удалённый репозиторий](https://borgbackup.readthedocs.io/en/stable/quickstart.html).
**Keelhaven — нативный интерфейс, но не независимый сервис.** Бесплатный GPLv3, SwiftUI + restic (Go), SFTP, выбранные папки и версии. Это beta; планировщик находится внутри приложения и останавливается вместе с ним. [Проект](https://github.com/shenxianpeng/keelhaven), [реализация планировщика](https://github.com/shenxianpeng/keelhaven/blob/main/Keelhaven/Services/SchedulerService.swift).
### Другие проверенные варианты и причина отказа
- **RsyncGUI / RsyncUI:** SwiftUI + rsync, SSH и маски; RsyncGUI умеет запускать задания через launchd при закрытом окне, но не документирует полноценное хранилище версий с ротацией и проверкой восстановления. RsyncUI уже проверен и не имеет независимого планировщика. [RsyncGUI](https://github.com/kochj23/RsyncGUI), [RsyncUI](https://github.com/rsyncOSX/RsyncUI).
- **FreeFileSync:** C++/wxWidgets, бесплатное приложение, SFTP, фильтры и папка старых версий; это синхронизация, а расписание на Mac требует отдельного задания Automator/Calendar или cron. [Возможности](https://freefilesync.org/faq.php), [расписание](https://freefilesync.org/manual.php?topic=schedule-batch-jobs).
- **InLocker:** Rust/Tauri + React, launchd и локальные архивы; по README маски исключений и ротация версий ещё в планах, шифрованные задания нельзя выполнять автоматически, SFTP нет. Сайт пишет MIT, а README помечает лицензию TBD — статус лицензии противоречив. [Исходники и ограничения](https://github.com/beloureiro/inlocker).
- **SyncTray:** SwiftUI + rclone с launchd и SFTP; управляет синхронизацией, а не самостоятельным версионным архивом. [Проект](https://github.com/mthines/sync-tray).
- **Restic + resticprofile:** Go, полностью свободный набор с профилями и launchd, но без UI; это резервный вариант для работы через конфигурационные файлы. [resticprofile](https://github.com/creativeprojects/resticprofile).
- **Borgmatic:** Python + Borg, автоматизация и даже экспорт PostgreSQL; без UI, а Borg нужен также на Kraken. [Проект](https://github.com/borgmatic-collective/borgmatic).
- **Duplicati:** C#/.NET, веб-сервер с настоящими версионными бэкапами и SFTP; уже отвергнут владельцем из-за стека .NET. [Проект](https://github.com/duplicati/duplicati).
- **Duplicacy:** движок Go, CLI бесплатен для личного использования, но интерфейс и расписание Web Edition после пробного периода требуют платной лицензии; это не полностью свободный вариант с UI. [Условия лицензии](https://duplicacy.com/buy.html).
- **Cryoframe:** Swift/SwiftUI и root LaunchDaemon, но продукт специально для медиа-библиотек и пишет на локальные/смонтированные диски, не по SFTP. [Проект](https://github.com/breed007/Cryoframe).
- **Arq, Carbon Copy Cloner, ChronoSync:** коммерческие продукты; не выбирать как единственное решение при предпочтении open source. [Arq](https://www.arqbackup.com/pricing/), [CCC](https://bombich.com/pricing), [ChronoSync](https://www.econtechnologies.com/chronosync/overview.html).
### Как применить выбор к Mac и Kraken
Для Backrest нужен новый каталог репозитория внутри существующего backups/mbp-black/ на Kraken. Источники: /Users/admin/ с переведёнными и проверенными масками, отдельные перечисленные ниже системные пути, каталог согласованных дампов PostgreSQL; внешний Samsung970EVO не выбирать. Установить фоновый LaunchAgent официальным способом, настроить ежедневное 03:00, срок хранения и периодическую проверку. Прежде чем назвать задачу завершённой, подтвердить запуск после закрытия браузера и повторного входа, полный бэкап без ошибок, фактический состав снимка, проверку репозитория и восстановление нескольких файлов в отдельную папку. Существующие каталоги home/, system/, postgresql/ не удалять. Дампы PostgreSQL от 22 октября не обновляются автоматически: для актуальной БД отдельно нужен согласованный pg_dump/pg_basebackup; файловый снимок сам этого не заменяет. [PostgreSQL: SQL-дампы](https://www.postgresql.org/docs/17/backup-dump.html).
**Фактическое состояние:** Backrest и Kopia на этом Mac не установлены; LaunchAgent Backrest не загружен. Time Machine выключена. SSH на локальный адрес Kraken 192.168.1.14 и право записи проверены, но VPN-адрес 10.99.1.2 при прямой проверке не ответил. Рабочего автоматического бэкапа и успешного теста восстановления пока нет.
---
@@ -67,11 +96,9 @@ RsyncUI требует запущенного приложения и вошед
## Что копируется
| Задача | Источник | Подкаталог на Kraken |
|---|---|---|
| 01 Home | `/Users/admin/` с исключениями ниже | `home/` |
| 02 PostgreSQL — saved dumps | `~/.local/share/mbp-black-postgresql/` | `postgresql/` |
| 03 System files | Только пути из `system.files` | `system/` |
- 01 Home: `/Users/admin/` с исключениями ниже → `home/` на Kraken.
- 02 PostgreSQL — saved dumps: `~/.local/share/mbp-black-postgresql/` → `postgresql/`.
- 03 System files: только пути из `system.files` → `system/`.
В домашней папке по умолчанию остаются документы, исходники, настройки, SSH-ключи, состояние приложений и прочие данные, не попавшие под исключения. **Глобального исключения `.git` нет**: remote не гарантирует сохранность локальных коммитов, веток и stash. Содержимое Ryujinx и архивы его прошивок также оставлены.