9.4 KiB
title, created, updated, type, namespace, status, tags, related
| title | created | updated | type | namespace | status | tags | related | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Сверка локальной папки с TrueNAS (Edu/Maskeliade vs Downloads/Maskeliade) | 2026-09-23 | 2026-09-23 | tech | personal | in-progress |
|
|
Сверка локальной папки с TrueNAS — Edu/Maskeliade vs Downloads/Maskeliade
Задача (2026-09-23, Alex): «проверь, папка truenas
/Edu/Маскелиадеполностью совпадает с/Users/admin/Downloads/Maskeliade?» Сверка не завершена — упёрлась в кириллицу в пути. Ниже: факты, тупик, готовые скрипты, следующий шаг.
🔴 ФАКТ №1 — доки были устаревшие, папка НЕ пустая
Прежняя запись (family/how-to/truenas-infrastructure.md, раздел WebDAV 2026-09-23) гласила:
«
Маскелиаде— ПУСТАЯ папка с 31.05.2026 (внутри только./..)».
Это устарело. Живая проверка 2026-09-23:
drwxrwxr-x 8 root nas_users 14 Sep 22 23:56 Маскелиаде
drwxrwxr-x 3 root nas_users 50 Sep 23 00:36 lesson1
drwxrwxr-x 3 root nas_users 74 Sep 23 00:25 lesson2
drwxrwxr-x 3 root nas_users 67 Sep 23 00:13 lesson3
drwxrwxr-x 3 root nas_users 36 Sep 23 00:02 lesson4
drwxrwxr-x 3 root nas_users 14 Sep 22 23:56 synths
drwxrwxr-x 3 root nas_users 12 Sep 22 23:53 tametrial
| Метрика | Локально /Users/admin/Downloads/Maskeliade |
TrueNAS /mnt/RED_2TB/Edu/Маскелиаде |
|---|---|---|
| Объём | 8.0 G | 8.7 G |
| Файлов | 917 (без .DS_Store/._*) |
1813 (с мусором macOS) |
| Подпапки | lesson1..4, synths, tametrial |
те же 6 |
| Владелец | — | root:nas_users, drwxrwxr-x |
✅ ACL-фикс сработал. Владелец-группа
nas_users(gid 3000) и режимdrwxrwxr-x— это ровно тот результат, что описан в personal/tech/truenas-nfs4-acl-and-arrmultiuser §«Sharing a whole tree by GROUP». Значит «нет доступа» больше не воспроизводится.
⚠️ Корень
Edu(223 G) тоже ужеroot:nas_usersdrwxrwxr-x— рекурсивная правка прошла по дереву целиком, а не только по корню.
Расхождение 0.7 G — причина не установлена
Локально 8.0 G / 917 файлов, на NAS 8.7 G. Варианты (не проверено):
lesson2/lesson3/lesson4на Mac есть (видел вfind -size +1M:lesson4/407077297.mp4279M и др.), значит разница не в отсутствующих уроках.- Вероятнее: на NAS лежат дополнительные файлы/страницы (сохранённые HTML с
_files/каталогами — они дают._*и_filesмусор), либо локальная копия обновлялась после заливки. .DS_Store/._*дают часть разницы, но не 0.7 G.
Без хеш-сверки утверждать «совпадает» НЕЛЬЗЯ. Размер — не доказательство.
🔴 ФАКТ №2 — кириллица в имени папки ломает удалённое выполнение
Три попытки построить удалённый манифест упали:
| Попытка | Что сделал | Результат |
|---|---|---|
| 1 | SUBDIR="Maskeliade-compare" в heredoc-скрипте |
cd: can't cd to /data/Maskeliade-compare — переменная не была заменена, путь в латинице, папки нет |
| 2 | передал путь аргументом в /bin/sh внутри alpine |
cd: can't cd to /data/Maskeliade — М не выжило: путь потерял кириллические символы при передаче |
| 3 | pkill -f перед запуском |
ssh вернул exit 255 (сам pkill уронил сессию), scp при этом прошёл |
Вывод: передавать кириллический путь через ssh "…$VAR…" / sh -c ненадёжно — символы
теряются. Работает только вариант, где кириллица не проходит через аргументы:
зашить путь прямо в скрипт-файл (созданный write_file локально, залитый scp), либо
переименовать папку в латиницу.
Согласуется с известным питфоллом: кириллица валит
tirithкакconfusable_text(HIGH, MITRE T1036.005) — три блокировки/апрува за сессию. См. family/how-to/truenas-infrastructure.
Готовые артефакты (на Mac)
Всё в /Users/admin/tmp-maskeliade/:
| Файл | Назначение |
|---|---|
make-local-manifest.sh |
манифест <path>\t<size>\t<md5> для любого локального каталога (macOS md5 -q, stat -f %z) |
remote-v2.sh |
манифест для каталога на TrueNAS: apk add coreutils внутри alpine, md5sum, исключает .DS_Store / ._* |
poll.sh |
опрос прогресса: строки, ошибки, RUNNING/DONE |
local.tsv |
✅ готов — 917 файлов, /Users/admin/Downloads/Maskeliade |
⚠️ На TrueNAS у
truenas_adminНЕТmd5/md5sum/lsusb— хеши считать только внутри контейнера (alpine:latest+coreutils). Тот же приём, чтоstringsвместоsqlite3.
Рабочий рецепт (при латинском пути)
# 0. один раз: переименовать папку в латиницу (убирает ВСЕ проблемы выше)
# Edu/Маскелиаде → Edu/Maskeliade (делает Alex)
# 1. локальный манифест
bash /Users/admin/tmp-maskeliade/make-local-manifest.sh \
/Users/admin/Downloads/Maskeliade /Users/admin/tmp-maskeliade/local.tsv
# 2. удалённый манифест (путь ЛАТИНИЦЕЙ, зашит в скрипт, залит scp)
scp -q /Users/admin/tmp-maskeliade/remote-v2.sh \
truenas_admin@mallexxx.duckdns.org:/mnt/RED_2TB/storage/cmp-remote-v2.sh
ssh truenas_admin@mallexxx.duckdns.org \
"nohup sh /mnt/RED_2TB/storage/cmp-remote-v2.sh /mnt/RED_2TB/Edu/Maskeliade \
> /tmp/remote-manifest.tsv 2>/tmp/remote-err.txt & echo STARTED"
# 3. забрать и сравнить
scp -q truenas_admin@mallexxx.duckdns.org:/tmp/remote-manifest.tsv /Users/admin/tmp-maskeliade/remote.tsv
join -t$'\t' -j1 -a1 -a2 -e MISSING -o 0,2.2,3.2,2.3,3.3 \
<(sort /Users/admin/tmp-maskeliade/local.tsv) \
<(sort /Users/admin/tmp-maskeliade/remote.tsv) \
| awk -F'\t' '$2!=$3 || $4!=$5'
# пустой вывод = полное совпадение по содержимому
Ожидаемое время: ~5–10 мин на хеширование 8.7 G (сеть 192.168.1.x ↔ 192.168.2.x — только
через внешку, ~104 ms RTT; хеши считаются на NAS, на Mac идёт только текст манифеста).
Следующий шаг
- Решить развилку (Alex): разрешить запускать
sshбез апрува на время сверки — или переименоватьEdu/Маскелиаде→Edu/Maskeliadeи сверять напрямую. - Догнать
remote.tsv, сравнить, отдать три списка: нет на NAS / нет локально / содержимое разное. - После сверки — поправить устаревшие доки (см. ниже).
Что нужно поправить в доке после завершения
| Док | Что устарело |
|---|---|
family/how-to/truenas-infrastructure.md §WebDAV |
«Маскелиаде — ПУСТАЯ папка» ❌ → сейчас 8.7 G, 6 подпапок |
family/how-to/truenas-infrastructure.md §WebDAV |
«план фикса согласован, НЕ выполнен» ❌ → выполнен, root:nas_users, drwxrwxr-x |
family/how-to/red2tb-dataset-map.md §«Кто владелец Edu» |
«применённый план (согласован, не выполнен)» ❌ → выполнен |
family/how-to/truenas-infrastructure.md §WebDAV |
реальный объект «файл в Edu, не в Маскелиаде» ❌ → объект теперь папка Маскелиаде |
Ссылки
- personal/tech/truenas-nfs4-acl-and-arrmultiuser — ACL-рецепт
nas_users, ставший причиной нынешнегоroot:nas_users - family/how-to/truenas-infrastructure — общая инфраструктура, WebDAV
- family/how-to/red2tb-dataset-map — карта датасетов, владельцы
Edu