Files
obsidian-vault/family/how-to/time-machine.md
T

152 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Time Machine Backup — Kraken (RPi5)
## Топология
Бэкап идёт по SMB на Кракен (RPi5). Samba управляется OMV (не Docker-контейнер).
Destination: `smb://timemachine@kraken/TimeMachine`
Бандл: `mbp-black.sparsebundle`
Пользователь: `timemachine` (uid=1001), создан через omv-rpc
Пароль: `smbpasswd -a timemachine`
passdb.tdb персистентен на хосте — пароль не слетает при рестарте
Бандл лежит на локальном HDD Кракена: `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/timemachine/`
## Конфигурация OMV Samba
Шара добавлена через `extraoptions` в `conf.service.smb`:
```
[TimeMachine]
path = /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/timemachine
browseable = yes
read only = no
valid users = timemachine
vfs objects = fruit streams_xattr
fruit:time machine = yes
fruit:time machine max size = 3000000000000
```
Применить конфиг:
```bash
omv-salt deploy run samba
```
## Проверка доступа
```bash
mkdir -p /tmp/tm-test
mount_smbfs //timemachine:'timemachine'@kraken/TimeMachine /tmp/tm-test
ls /tmp/tm-test # должен показать mbp-black.sparsebundle
umount /tmp/tm-test
```
## Диагностика: почему бэкап не завершается
### Просмотр логов backupd
backupd пишет логи в subsystem `com.apple.TimeMachine`. Ключевые команды:
```bash
# Все ошибки за последние N часов
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep -iE '(error|fail|cannot|could not|timeout|disconnect|BACKUP|thinning)'
# Прогресс копирования
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep "CopyProgress"
# Когда бэкап завершился/упал
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep -E "backup completed|backup failed|BACKUP_FAILED|BackupFinishing|Finished backup|BackupCancelled"
```
### Текущий статус
```bash
tmutil status
# BackupPhase может быть:
# - MountingDiskImage — монтирует sparsebundle (может висеть, если бандл повреждён)
# - PreparingSourceVolumes — собирает список изменений (файлы eventDB)
# - Copying — копирует файлы
# - ThinningPostCopy — удаляет старые бэкапы
```
### Известные причины сбоев
1. **BACKUP_FAILED_DISCONNECTED_NETWORK (26)** / **BACKUP_FAILED_DISCONNECTED_DISK_IMAGE (70)**
- SMB-шара отвалилась во время бэкапа. Причины: WG туннель перезагрузился, таймаут на SMB, проблемы с сетью.
- Симптом: `Failed to set checkpoint marker — No such file or directory`, потом ошибка DISCONNECTED
- Косвенно: внутри sparsebundle остаются `.interrupted` папки. На 2026-07-01 их было 43 штуки.
2. **BACKUP_FAILED_NO_SPACE_FOR_LOCAL_SNAPSHOT (50)**
- Не хватает места на локальном диске Mac (`/System/Volumes/Data`) для локального снапшота.
- Лечится: освободить место на локальном SSD, или удалить старые локальные снапшоты:
```bash
tmutil deletelocalsnapshots /
```
3. **macOS Tahoe 26 (26.5.1) — SMB signing/encryption**
- Начиная с macOS 26 (Tahoe), Apple ужесточила требования к SMB signing.
- OMV Samba может не справляться, особенно через WireGuard.
- Если бэкап постоянно срывается с DISCONNECTED, попробовать:
```bash
sudo tee /etc/nsmb.conf << 'EOF'
[default]
signing_required=yes
streams=yes
soft=yes
dir_cache_max_cnt=0
protocol_vers_map=6
mc_prefer_wired=yes
EOF
```
- Источник: [GitHub Gist — macOS Tahoe SMB Backup Fix](https://gist.github.com/Zahorone/6915be6f5088edb2f64018ce9e4dfe97)
### ~43 .interrupted папок — не причина, а следствие*
backupd выводит `Expected SnapshotInProgressContainer metadata type but found APFSBackup` для каждой прерванной сессии. Это не ошибка — он корректно обрабатывает interrupted-папки и пытается их "апгрейднуть". Проблема не в них, а в том что бэкап постоянно прерывается по DISCONNECTED.
## Перевыбрать destination на Mac
```bash
sudo tmutil setdestination -p smb://timemachine@kraken/TimeMachine
```
## Связанные заметки
- [[family/how-to/wireguard-vpn|WireGuard VPN]] — туннель для бэкапа вне дома
- [[family/how-to/kraken-network|Kraken Network]] — ssh, сетевые адреса
## Важно: связка WireGuard + SMB
Когда mbp-black не дома (IP не `192.168.1.x`), `kraken` резолвится через VPS dnsmasq
в `10.99.1.2` (WG адрес). SMB работает через туннель, но может быть медленнее.
Проверка доступа через WG с mbp-black:
```bash
smbutil view //timemachine@kraken
```
Если дома — лучше через LAN (`smb://192.168.1.15/TimeMachine`), быстрее.
## History
- **До 2026-06-02**: использовался Docker-контейнер `mbentley/timemachine:smb`.
Контейнер снесён, Samba перенесена на хост OMV из-за проблем с persisting паролей
(tdbsam не сохранялся, `ntlm auth = no` ломал backupd при reconnect).
- **2026-07-01**: диагностика причин срыва бэкапов на mbp-black (26.5.1, WG туннель).
- backupd не виснет — реально копирует, но медленно через WG.
- **Найдены ошибки в логах:**
- `BACKUP_FAILED_DISCONNECTED_NETWORK (26)` в 15:21 — SMB отвалился. Симптом: `Failed to set checkpoint marker — No such file or directory`.
- После перезапуска: `BACKUP_FAILED_NO_SPACE_FOR_LOCAL_SNAPSHOT (50)` — не хватило места для локального снапшота.
- Внутри бандла ~43 `.interrupted` папок — следствие прерванных сессий, не причина.
- Добавлен раздел "Диагностика: почему бэкап не завершается" с командами просмотра логов и известными причинами сбоев.
- Добавлен референс на GitHub Gist по macOS Tahoe SMB signing fix.
- **Проблема:** пароль `timemachine` не проходит при подключении через WireGuard (mbp-black
вне дома, IP `10.120.1.143`, Kraken резолвится в WG `10.99.1.2`). `mount_smbfs` и `smbutil`
выдают `Authentication error`.
- **Проверено на Kraken:** smbd слушает на `0.0.0.0:445`, TCP/445 через WG открыт,
`smbstatus` показывает активных сессий 0. Samba конфигурация: `disable netbios = yes`,
`log level = 0` (логи в /var/log/samba/log.smbd пустые — запросы аутентификации даже
не доходят до smbd, значит проблема на клиентской стороне).
- **Диагностика не завершена** — причина Authentication error не выяснена.
- **Доки обновлены:** убрано упоминание TrueNAS, прописан прямой пароль `timemachine`
в credentials в обоих документах (`time-machine.md` и `openmediavault-rpi5.md`).