[2026-09-20] eagle: family/how-to/kraken-access.md family/plans/kraken-backup-to-truenas.md personal/tech/docker-data-root-mount-race.md
This commit is contained in:
1 parent
d295d69a4c
commit
49e1c1a11f
3 files changed
+96
-2
No files matched your search
@@ -133,3 +133,34 @@ docker info --format "containers={{.Containers}} running={{.ContainersRunning}}"
|
||||
Кратко: boot 17:29:17, dockerd 17:31:01, диск 17:31:27 (на 26 с позже) → 0
|
||||
контейнеров. Фикс: drop-in `RequiresMountsFor=/srv/.../6194539b.../docker-data`
|
||||
+ чистка fstab. Бэкап: `/home/kraken/backups/docker-recovery-20260920-105228/`.
|
||||
|
||||
## Смежная ловушка: смешанные владельцы под data-root
|
||||
|
||||
Бэкап (или tar) дерева сервисов на том же диске часто упирается в **разных владельцев** —
|
||||
часть каталогов `root:root` (созданы root-контейнерами), часть `1000:1000`.
|
||||
Бэкап от обычного юзера получит `Permission denied` на root-каталогах и **молча
|
||||
сделает неполный архив**.
|
||||
|
||||
```bash
|
||||
sudo ls -ldn /srv/dev-disk-by-uuid-<DISK>/docker/*/ | awk '{print $3, $4, $NF}'
|
||||
```
|
||||
|
||||
Если `sudo -n true` проходит (NOPASSWD есть) — архивировать под `sudo -n`, а на приёмной
|
||||
стороне выставить владельца бэкап-юзера: `rsync --chown=<user>:<group>` (не голое копирование,
|
||||
иначе файл ляжет `root:root`).
|
||||
|
||||
**ПИТФОЛЛ — длинный `chown -R`/архив умирает вместе с SSH-сессией.** Рекурсивный `chown`
|
||||
(или большой `tar`) по медленному USB-HDD идёт минутами и убивается при обрыве SSH.
|
||||
Запускать отвязанно:
|
||||
```bash
|
||||
sudo systemd-run --unit=<name> --collect --property=Type=oneshot chown -R 1000:1000 <path>
|
||||
systemctl is-active <name> # 'activating' = ещё идёт, доживёт до конца независимо от SSH
|
||||
```
|
||||
Тем же приёмом — любую долгую удалённую задачу через флаки-линк.
|
||||
|
||||
**ПИТФОЛЛ — контейнер в `Restarting (1)` с `mkdir: Permission denied` на своём каталоге данных** —
|
||||
тот же класс багов, но наоборот: UID владельца на хосте не совпадает с UID, под которым
|
||||
работает контейнер (образ `USER` или compose `user:`). Лечится `chown <container-uid>:<gid> <host-dir>`.
|
||||
Ожидаемый UID: `docker inspect <name> --format '{{.Config.User}}'`.
|
||||
Первые несколько `mkdir`-ошибок могут быть **остатком буфера** от прежнего падения — прежде
|
||||
чем объявлять провал, убедиться, что контейнер реально держится `Up`.
|
||||
Reference in new issue
Block a user