37 lines
3.8 KiB
Markdown
37 lines
3.8 KiB
Markdown
# НИИКН: нарезка папки «Опыт» (Закупка Соловки) в тома ≤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мб/<N>/<N>.zip + <N>.z01…` — по подпапке на объект
|
||
- Регистрация: `occ files:scan --path=...`, владелец 33:33
|
||
- Ссылка создана через OCS API c app-password бота Максимки (LXC 114, `/root/.clawdbot/nextcloud-creds.env`)
|
||
|
||
## Результат (v2 после жалобы «zip не открывается»)
|
||
Первая версия (46 multi-volume архивов по папкам) не открывалась у людей двойным кликом —
|
||
Проводник/маковский Архиватор не умеют split-zip. Перепаковано скриптом `/tmp/repack.py`:
|
||
- файлы ≤94 МБ → **независимые обычные zip ≤95 МБ** (`N-partNNN.zip`, bin-packing в порядке обхода)
|
||
- файлы 94–99 МБ → одиночный zip (`N-файл-….zip`)
|
||
- 278 файлов >99 МБ (docx/pdf-сканы до 700 МБ!) → тома `-s 95m` только на сам файл (`N-ТОМА-….zip+.z01…`)
|
||
- Итого 1728 файлов, 115 ГБ; покрытие сверено: 4986+23+278 = 5287 файлов источника
|
||
- `ПРОЧТИ-МЕНЯ.txt` с инструкцией лежит в корне шары
|
||
- **Публичная ссылка: https://niikn.com/s/kqH46Jrjnb4ri3q** (read-only); скачивание part-zip проверено end-to-end
|
||
- Диск VM 108: /mnt/ncdata 93% — после загрузки на площадку папку-дубль можно удалить
|
||
|
||
## Грабли/заметки
|
||
- Публичная шара c3kw… read-only (permissions 17) — заливать через неё нельзя, поэтому писали в datadir + scan
|
||
- **Split-zip (.z01) не открывает ни Проводник, ни Archive Utility** — только WinRAR/7-Zip и только при всех томах рядом; для людей по умолчанию делать независимые zip, тома — лишь где файл сам больше лимита
|
||
- zip rc=16 «cannot update a split archive» = коллизия имени архива: в 14/Акты ГИКЭ два разных файла с одинаковым именем «1.31. Акт ГИКЭ…» (в подпапках 1.31 и 1.16, версии отличаются на 9.7 КБ) — второй набор назван «дубль из 1.16», Максиму стоит разобраться, какая версия верная
|
||
- Скрипты и логи на VM 108: `/tmp/zip-opyt.sh|.log` (v1), `/tmp/repack.py`, `/tmp/repack.log` (v2)
|
||
|
||
#niikn #nextcloud #закупки
|