Автор Гілка: Ratarmount  (Прочитано 1259 раз)

Відсутній bodqhrohro

  • Новачок
  • *
  • дописів: 29
  • Карма: +0/-1
Ratarmount
« : 2020-02-16 17:28:50 »
Суттєвим недоліком TAR-архівів є відсутність таблиці змісту архіву: щоб дістатися до файлу, що знаходиться в кінці архіву, треба просканувати заголовки всіх попередніх файлів, а щоб дізнатися зміст архіву — просканувати всі заголовки. Ситуація ускладнюється, коли TAR-архів на додачу стиснений потоковим компресором (GZip, BZip2, LZMA тощо): адже для зчитування архіву треба його повністю розпакувати, без можливості пропустити блоки відомої довжини. Тому робота з великими стисненими архівами у форматі TAR набагато повільніша, ніж з архівами у форматах, що комбінують архівацію і стиснення та стискають кожен файл окремо (ZIP, 7-Zip тощо).


Ratarmount вирішує цю проблему шляхом створення індексу архіву, що дозволяє одразу зчитати потрібний файл. Також для архівів, стиснених GZip та BZip2, запам'ятовуються зміщення стиснених блоків відносно нестисненого потоку, що дозволяє одразу переходити до потрібного блоку без розпаковування попередніх. Ratarmount написаний на Python і використовує FUSE для монтування архівів у якості віртуальних файлових систем (тільки для зчитування); індекс створюється автоматично при першому монтуванні.


Репозиторій проекту: https://github.com/mxmlnkn/ratarmount


Виміри швидкодії: https://unix.stackexchange.com/a/501909/129375