diff --git a/decisions/2026-06-11-niikn-opyt-arhiv-100mb.md b/decisions/2026-06-11-niikn-opyt-arhiv-100mb.md new file mode 100644 index 0000000..e2bdaa5 --- /dev/null +++ b/decisions/2026-06-11-niikn-opyt-arhiv-100mb.md @@ -0,0 +1,29 @@ +# НИИКН: нарезка папки «Опыт» (Закупка Соловки) в тома ≤100 МБ + +**Дата:** 2026-06-11 +**Задача:** папку по шаре https://niikn.com/s/c3kwLWRa8dKX848 сжать в файлы до 100 МБ (лимит закупочной площадки). + +## Исходник +- Владелец: `maksimmaul@gmail.com`, путь `Закупка Соловки/Опыт` +- 46 папок (1–46), 5287 файлов, 115 ГиБ — договоры, акты ГИКЭ, УПД (PDF/ZIP/SIG) +- Внутри есть одиночные PDF до 336 МБ → одиночными зипами не обойтись, только multi-volume + +## Решение +- Работа целиком на VM 108 (192.168.1.200, datadir `/mnt/ncdata`), без перегона данных по сети +- Бенчмарк: deflate -1 даёт всего 2.7% на PDF-сканах при 42 МБ/с → выбран **store (-0)**, IO-bound +- `zip -rq -0 -s 95m` на каждую папку: тома по 95 МиБ = 99 614 720 байт — меньше «100 МБ» и в MiB, и в десятичных МБ +- Выход: `Закупка Соловки/Опыт-архивы-100мб//.zip + .z01…` — по подпапке на объект +- Регистрация: `occ files:scan --path=...`, владелец 33:33 +- Ссылка создана через OCS API c app-password бота Максимки (LXC 114, `/root/.clawdbot/nextcloud-creds.env`) + +## Результат +- **1262 тома, 115 ГБ, 0 ошибок**, ~29 минут; целостность проверена (склейка `zip -s 0` + `unzip -t`) +- **Публичная ссылка: https://niikn.com/s/kqH46Jrjnb4ri3q** (read-only) +- Диск VM 108: /mnt/ncdata 93% (302 ГБ свободно) — после загрузки на площадку папку-дубль можно удалить + +## Грабли/заметки +- Публичная шара c3kw… read-only (permissions 17) — заливать через неё нельзя, поэтому писали в datadir + scan +- Распаковка у получателя: положить все тома `.z*` + `.zip` в одну папку, открыть `.zip` через WinRAR/7-Zip +- Скрипт и лог на VM 108: `/tmp/zip-opyt.sh`, `/tmp/zip-opyt.log` + +#niikn #nextcloud #закупки