[2026-07-03] taiga-vault: family/how-to/htpc-system.md family/projects/media-toolbox-kraken.md
This commit is contained in:
@@ -426,7 +426,9 @@ XwaylandEisNoPrompt=true
|
|||||||
|
|
||||||
## Диски (2026-07-03)
|
## Диски (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/system/storage/` (Seagate 12TB, ext4, sdb)
|
||||||
- Цель: `/run/media/bazzite/Backup/` (Toshiba 1.8TB, ext4, sdc)
|
- Цель: `/run/media/bazzite/Backup/` (Toshiba 1.8TB, ext4, sdc)
|
||||||
- Исключить: `timemachine/`
|
- Исключить: `timemachine/`
|
||||||
- Режим: `rsync -aHAX --delete` (архив, хардлинки, ACL, xattr, зеркало)
|
- Режим: `rsync -aHAX` (архив, хардлинки, ACL, xattr)
|
||||||
- Защита сна: `touch /tmp/rsync-active` (HTPC не уйдёт в сон)
|
- Защита сна: `touch /tmp/rsync-active` (HTPC не уйдёт в сон)
|
||||||
|
|
||||||
**Исполнение (текущий прогресс, rsync запущен удалённо через nohup):**
|
**Исполнение (выполненные команды на HTPC):**
|
||||||
```bash
|
```bash
|
||||||
# Предварительно: исправить владельца Backup (был root)
|
# Предварительно: исправить владельца Backup (был root)
|
||||||
echo bazzite | sudo -S chown bazzite:bazzite /run/media/bazzite/Backup/
|
echo bazzite | sudo -S chown bazzite:bazzite /run/media/bazzite/Backup/
|
||||||
|
|
||||||
# Запуск rsync на HTPC через nohup (чтобы не зависеть от SSH таймаута)
|
# Запуск rsync с systemd-inhibit (чтобы HTPC не уснул)
|
||||||
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 &'
|
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 &
|
||||||
ssh htpc 'tail -3 /tmp/rsync-storage-to-backup2.log'
|
|
||||||
ssh htpc 'df -h /run/media/bazzite/Backup/'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Содержимое storage (Seagate 12TB, всего ~4.1T):**
|
**Содержимое storage (Seagate 12TB, всего ~4.1T):**
|
||||||
@@ -475,13 +475,33 @@ ssh htpc 'df -h /run/media/bazzite/Backup/'
|
|||||||
| `apt-cache/` | 374M |
|
| `apt-cache/` | 374M |
|
||||||
| остальное (obsidian, watchlist-sync, var-log, tmp, docker-data) | ~100M |
|
| остальное (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 <pid>`.
|
1. **Permission denied на lost+found, rclone.conf и др.** — не критично, rsync пропускает файлы с ошибками `Permission denied (13)` и продолжает (exit code 23). Это не останавливает rsync.
|
||||||
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/`.
|
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
|
### Агентские блокеры для администрирования HTPC
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
created: '2026-05-13'
|
created: '2026-05-13'
|
||||||
updated: '2026-07-03'
|
|updated: '2026-07-03'
|
||||||
status: in-progress
|
status: cancelled
|
||||||
tags:
|
tags:
|
||||||
- kraken
|
- kraken
|
||||||
- media
|
- media
|
||||||
|
|||||||
Reference in New Issue
Block a user