Ratarmount (Random Access Tar Mount) — це інструмент з відкритим кодом, який вирішує проблему з повільним доступом до файлів.
Зазвичай, якщо вам потрібно дістати один документ із ZIP або TAR.GZ вагою в кілька десятків гігабайтів, система змушена або розпаковувати весь архів, або послідовно читати його з самого початку.
Ratarmount же монтує архіви як звичайні папки у файловій системі. Ви отримуєте миттєвий довільний доступ до будь-якого файлу всередині без попереднього розпакування.
Чим він краще за інші архіватори?
Щоб зрозуміти цінність Ratarmount, варто згадати, як влаштовані класичні формати, наприклад, .tar. Він створювався для запису на магнітні стрічки і в ньому файли йдуть один за одним. Він не має центрального каталогу на початку чи в кінці архіву.
Якщо вам потрібно дістати файл, який знаходиться в самому кінці 100-гігабайтного TAR-архіву, утиліті доведеться прочитати всі 100 гігабайт даних.
Якщо архів ще й стиснутий (наприклад, .tar.gz або .tar.bz2), ситуація погіршується. Алгоритми стиснення (зокрема, Gzip) вимагають декомпресії всього попереднього блоку даних, оскільки стан декомпресора для поточного байта залежить від усіх попередніх байтів.
Принцип роботи Ratarmount
Ratarmount обходить це обмеження шляхом створення індексу файлової структури та точок зміщення. Весь процес відбувається у два кроки.
1. Перший запуск та індексація
Коли ви вперше монтуєте архів за допомогою Ratarmount, утиліта сканує його повністю. Вона фіксує:
- точні зміщення (на якій позиції в байтах починається кожен файл);
- метадані файлів (права доступу, розмір, імена);
- точки переходу для стиснутих даних (якщо використовується сумісний формат стиснення, наприклад, Bzip2 або спеціально підготовлений Gzip).
Всю цю карту архіву Ratarmount згортає в компактну базу даних SQLite (файл .index.sqlite з’являється поруч із архівом або в кеші).
2. Повторне монтування та FUSE
При наступних викликах індексація вже не потрібна — Ratarmount зчитує готовий файл SQLite за мілісекунди. Використовуючи технологію FUSE (Filesystem in Userspace), утиліта створює віртуальну папку.
Коли операційна система або будь-яка програма звертається до файлу всередині цієї папки, Ratarmount:
- дивиться в індекс SQLite, де саме в архіві лежить цей файл;
- робить системний виклик
lseek(перехід на потрібну позицію) безпосередньо до цього місця в архіві; - зчитує лише необхідну кількість байтів.
Для миттєвого доступу всередині стиснутих архівів Ratarmount потребує індексації блоків стиснення.
Формати .tar.bz2, .tar.xz та .tar.zst підтримують такий доступ краще. Для класичного .tar.gz швидкість довільного доступу може залежати від кроку точок індексації, який було обрано під час створення індексу.
Фічі інструменту
- Економія дискового простору: більше не треба тримати на SSD подвійний обсяг даних, тобто сам архів та окремо його розпаковану копію.
- Економія часу: монтування після створення індексу займає менше секунди, а доступ до файлів обмежений лише швидкістю вашого накопичувача.
- Підтримка багатьох форматів: окрім TAR та його стиснутих варіацій (GZ, BZ2, XZ, ZST), інструмент працює з ZIP, RAR, 7Z, а також з образами файлових систем, як-от ISO, SquashFS або ext4.
- Вкладені архіви: Ratarmount вміє рекурсивно монтувати архіви, які знаходяться всередині інших архівів, відображаючи їх як звичайні вкладені папки.
- Прозорість для софту: будь-яка програма бачить змонтовану точку як звичайну локальну директорію.
Основні обмеження
Незважаючи на свою ефективність, Ratarmount має кілька архітектурних особливостей, які слід враховувати.
- Режим Read-Only
Модифікувати файли всередині змонтованого архіву не можна. Це пов’язано з природою форматів на кшталт TAR — перезапис файлу в середині вимагав би зсування всіх наступних даних на диску. - Час першої індексації
Якщо ви монтуєте архів вагою 500 ГБ уперше, доведеться зачекати, поки Ratarmount прочитає весь файл для створення бази SQLite. Для терабайтних архівів цей процес може тривати досить довго, хоча він і відбувається лише один раз. - Споживання оперативної пам’яті під час індексації
Процес створення індексу великих архівів потребує певних ресурсів CPU та RAM для обробки метаданих.
Де Ratarmount буде корисним?
Якщо коротко — усюди, де обсяги даних починають тиснути на мізки та дисковий простір. Коли файлів стає занадто багато, а час на їхнє розпакування вимірюється годинами, цей інструмент рятує від рутини.
Ось кілька реальних кейсів, де Ratarmount показує себе найкраще.
1. Робота з Big Data та датасетами у Machine Learning
У сфері штучного інтелекту датасети часто складаються з мільйонів маленьких зображень або текстових файлів, упакованих у TAR через обмеження на кількість інодів (inodes) у файлових системах Linux.
Замість розпакування терабайтів даних перед початком навчання моделі, інженери монтують архів через Ratarmount. Навчальний скрипт зчитує батчі даних напряму з архіву без втрати продуктивності.
2. Аналіз резервних копій (Backups)
Коли сисадміну потрібно відновити один конфігураційний файл із тижневого бекапу сервера розміром у кількасот гігабайт, розпакування всього архіву є нераціональним. Маючи Ratarmount, можна за хвилину знайти і скопіювати конкретний файл.
3. Робота на пристроях з обмеженою пам’яттю
На хмарних інстансах або embedded-пристроях із невеликими SSD-накопичувачами для розпакування великих логів чи дистрибутивів часто фізично немає місця. Монтування повністю закриває це питання.
Швидкий старт: базові команди
Інструмент написаний на Python і легко встановлюється через менеджер пакетів pip або системні репозиторії:
pip install ratarmount
Як змонтувати архів
Створюємо порожню папку (точку монтування) і викликаємо Ratarmount, вказавши шлях до нашого архіву:
mkdir ~/mounted_archive
ratarmount my_large_data.tar.gz ~/mounted_archive
Тепер можна спокійно заходити в папку ~/mounted_archive через cd або відкривати її у графічному менеджері файлів та працювати.
Як розмонтувати
Коли робота завершена, звільняємо ресурси FUSE стандартною командою:
unmount ~/mounted_archive
Попередня команда може не спрацювати на macOS або на деяких дистро Linux, тому скористайтесь цією:
fusermount -u ~/mounted_archive

