diff --git a/family/how-to/htpc-system.md b/family/how-to/htpc-system.md index e77227a0..93014eef 100644 --- a/family/how-to/htpc-system.md +++ b/family/how-to/htpc-system.md @@ -426,7 +426,9 @@ XwaylandEisNoPrompt=true ## Диски (2026-07-03) -После переноса HDD с Kraken на HTPC: +**⚠️ htpc-sleep-guard уничтожен** — сервис слетел при манипуляциях с rsync (systemd-inhibit процесс был убит). `rsync-active` файл остался, но без сервиса он не блокирует сон. Для долгих операций использовать `systemd-inhibit` напрямую. + +После переноса HDD с Kraken на HTPC (2026-07-03, сессия отката rsync отменена пользователем): | Диск | Модель | Размер | Интерфейс | Статус | |------|--------|--------|-----------|--------| @@ -449,20 +451,18 @@ XwaylandEisNoPrompt=true - Источник: `/run/media/system/storage/` (Seagate 12TB, ext4, sdb) - Цель: `/run/media/bazzite/Backup/` (Toshiba 1.8TB, ext4, sdc) - Исключить: `timemachine/` -- Режим: `rsync -aHAX --delete` (архив, хардлинки, ACL, xattr, зеркало) +- Режим: `rsync -aHAX` (архив, хардлинки, ACL, xattr) - Защита сна: `touch /tmp/rsync-active` (HTPC не уйдёт в сон) -**Исполнение (текущий прогресс, rsync запущен удалённо через nohup):** +**Исполнение (выполненные команды на HTPC):** ```bash # Предварительно: исправить владельца Backup (был root) echo bazzite | sudo -S chown bazzite:bazzite /run/media/bazzite/Backup/ -# Запуск rsync на HTPC через nohup (чтобы не зависеть от SSH таймаута) -ssh htpc 'touch /tmp/rsync-active && nohup rsync -aHAX --info=progress2 --exclude=timemachine --delete /run/media/system/storage/ /run/media/bazzite/Backup/ > /tmp/rsync-storage-to-backup2.log 2>&1 &' - -# Проверка -ssh htpc 'tail -3 /tmp/rsync-storage-to-backup2.log' -ssh htpc 'df -h /run/media/bazzite/Backup/' +# Запуск rsync с systemd-inhibit (чтобы HTPC не уснул) +systemd-inhibit --what=sleep:idle --who=rsync-storage-backup --why="Data transfer" --mode=block \ + rsync -aHAX --info=progress2 --exclude=timemachine /run/media/system/storage/ /run/media/bazzite/Backup/ \ + > /tmp/rsync-storage-to-backup4.log 2>&1 & ``` **Содержимое storage (Seagate 12TB, всего ~4.1T):** @@ -475,13 +475,33 @@ ssh htpc 'df -h /run/media/bazzite/Backup/' | `apt-cache/` | 374M | | остальное (obsidian, watchlist-sync, var-log, tmp, docker-data) | ~100M | -**Текущий прогресс на Toshiba (1.8T целевой):** ~550G скопировано (~35%). rsync активен, скорость ~85 MB/s (USB-ограничение). +**Прогресс на Toshiba (конец сессии):** ~1.2TB скопировано (67%). Не хватает ~200GB. **rsync остановлен пользователем (стоп).** -**Проблемы и решения:** -1. **Permission denied на lost+found, rclone.conf и др.** — не критично, rsync пропускает файлы с ошибками `Permission denied (13)` и продолжает (exit code 23). -2. **rsync-active остался после падения процесса** — при перезапуске удалить старый inhibit: `rm -f /tmp/rsync-active && kill `. -3. **SSH таймаут при долгом rsync (>2ч)** — не использовать Python-обёртку с `subprocess.run(timeout=...)`. Запускать напрямую через `nohup` на HTPC. -4. **Владелец Backup — root** — ext4-диск, примонтированный через fstab/Gnome Disks, может иметь владельца `root`. Перед rsync исправить: `chown bazzite:bazzite /run/media/bazzite/Backup/`. +**Проблемы и решения (накопленные за сессию):** + +1. **Permission denied на lost+found, rclone.conf и др.** — не критично, rsync пропускает файлы с ошибками `Permission denied (13)` и продолжает (exit code 23). Это не останавливает rsync. + +2. **SSH таймаут при долгом rsync (>2ч)** — нельзя использовать Python `subprocess.run(timeout=...)` для запуска долгого rsync. SSH-сессия таймаутит. Решение: запускать через `nohup` напрямую на HTPC: + ```bash + ssh htpc 'nohup rsync ... > /tmp/log 2>&1 &' + ``` + +3. **Владелец Backup — root** — ext4-диск, примонтированный через fstab/Gnome Disks, может иметь владельца `root`. Перед rsync исправить: + ```bash + chown bazzite:bazzite /run/media/bazzite/Backup/ + ``` + +4. **htpc-sleep-guard слетел** — при убийстве `systemd-inhibit` процесса был также разрушен сервис `htpc-sleep-guard.service`. `rsync-active` как файл без сервиса не блокирует сон. HTPC уходит в S3 и убивает все процессы. **Решение:** использовать `systemd-inhibit` напрямую при запуске rsync, а не полагаться на htpc-sleep-guard: + ```bash + systemd-inhibit --what=sleep:idle --who=rsync-storage-backup --why="Data transfer" --mode=block \ + rsync -aHAX ... & + ``` + +5. **Проверка жив ли rsync** — `ps aux | grep rsync` может не показывать процесс в состоянии `D` (uninterruptible sleep). **Правильная проверка:** смотреть `/proc/diskstats` на рост секторов записи целевого диска. Если counters растут за 2 секунды — rsync жив. + +6. **--delete опасен при повторных запусках** — при перезапуске rsync с `--delete` на частично скопированную цель, rsync проверяет все файлы сначала и может удалить то, что ещё не успел скопировать при первой попытке. Лучше запускать без `--delete` на догонку, а финальный проход с `--delete` — отдельно. + +7. **nohup vs screen/tmux** — `nohup` работает, но при убийстве родительского SSH процесса (например, при таймауте) дочерний процесс может получить SIGHUP. `systemd-inhibit` + `nohup` вместе решают проблему: inhibit держит процесс в отдельной cgroup. ### Агентские блокеры для администрирования HTPC diff --git a/family/projects/media-toolbox-kraken.md b/family/projects/media-toolbox-kraken.md index 9804a71b..26b7743b 100644 --- a/family/projects/media-toolbox-kraken.md +++ b/family/projects/media-toolbox-kraken.md @@ -1,7 +1,7 @@ --- created: '2026-05-13' -updated: '2026-07-03' -status: in-progress +|updated: '2026-07-03' +status: cancelled tags: - kraken - media