У меня ~ 10 миллионов небольших текстовых файлов, и я хотел бы решить следующие задачи:

  • сжать все данные;
  • положить все это в 1 файл для передачи через Интернет;
  • иметь возможность быстро получить доступ к каждому файлу по заданному пути;
  • (обновить) отдельные файлы, которые будут легко доступны из экосистемы Python.

Я придумал следующее решение:

  • gzip каждый файл (сжатие);
  • добавьте все сжатые файлы в один архив:

    single.tar -> /1/100/1001451.gz ... -> /9/956/9562548.gz

Решает ли это мои задачи?

1 ответ1

4

Я думаю, что может быть лучший способ решить эту проблему: tar , zip , rar и т.д. Все имеют свойство (в разной степени), что доступ к одному файлу

  • не очень быстро
  • непрозрачный: вы не можете просмотреть его напрямую, но нужно распаковать его в другом месте, а затем просмотреть его

Однако есть одна альтернатива: использовать сжатый файл изображения с файловой системой (например, cloop и ext4) или простой файл изображения со сжатой файловой системой (например, squashfs) - я обычно использую последний.

Таким образом, вы можете переместить ваш файл через Интернет, а в целевой системе непосредственно смонтировать его и получить быстрый и прозрачный доступ к файлам в нем.

РЕДАКТИРОВАТЬ

Что касается необходимости обновления файлов: у меня была та же проблема, и я решил ее, используя mksquashfs и overlayfs . Измененные файлы переходят в оверлей, оригиналы остаются в неизмененном транспортном файле (я считаю это важной функцией)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .