152 lines
8.0 KiB
Markdown
152 lines
8.0 KiB
Markdown
# 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`).
|