5.5 KiB
НИИКН: нарезка папки «Опыт» (Закупка Соловки) в архивы ≤100 МБ
Финал (v3 RAR): после жалоб («zip не открывается», «кракозябры в именах», «.z01 без формата») всё перепаковано в RAR5 скриптом
/tmp/repack4.py+ rar 7.12 (rarlab, /tmp/rar): бины → независимыеN-NNN.rar(≤94 МБ raw, store), файлы >99 МБ → томаN-ТОМА-имя.partN.rar(-v95m). 1735 RAR, 115 ГБ, покрытие 5287/5287, rc=0 все,rar tОК, скачивание через шару проверено. RAR5 хранит имена в юникоде — проблема кодировок снята архитектурно. Ссылка та же: https://niikn.com/s/kqH46Jrjnb4ri3qУроки: (1) Info-ZIP
zipна Ubuntu НЕ ставит UTF-8 флаг имён даже с LC_ALL=C.UTF-8 и не пишет Unicode extra (0x7075) → Проводник читает имена как CP866 → кракозябры. Питоновскийzipfileфлаг ставит, а в split-наборах флаг можно выставить патчем бита 11 в local header (.z01, offset 10 после маркера PK0708) и central dir (последний .zip, rfind PK0102 +8). (2) Split-zip (.z01) не открывают ни Проводник, ни Archive Utility, а .z01 у людей «файл без формата». (3) Для русских офисов сразу делать RAR-тома.partN.rar— двойной клик любой части открывает весь набор.
История ниже (v1 zip-тома → v2 независимые zip) — этапы, оставлено для контекста
Дата: 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 #закупки