Могу ли я хранить и работать с каталогом в сжатом виде?

Вопрос или проблема

Мне нужно работать с многими большими каталогами, которые поставляются в виде архива tar. Тем не менее, чтобы действительно выполнять какие-либо операции, эти архивы нужно распаковать в каталоги, и операции выполняются. Большинство операций включает coreutils или базовые команды Linux в конвейерах. Возможно ли работать с этими каталогами так, чтобы они были сжатыми?

Как предложил Кристофер, archivemount может это сделать. Позволяет записывать файлы, и когда размонтирован, файл .tar.gz автоматически обновляется, чтобы отразить изменения.

# ls -lh download.tar.gz
-rw-rw-r--. 1 steve steve 3.1M Фев 16  2010 download.tar.gz
# archivemount download.tar.gz /mnt
# cd /mnt
# find . -ls|head
     1 3127 drwxr-xr-x   0 root     root      3201043 Дек 31  1969 .
     2    0 drwxr-xr-x   0 steve    steve           0 Авг 30  2006 ./kojoney
     3    0 drwxr-xr-x   0 steve    steve           0 Авг 30  2006 ./kojoney/reports
     4    0 drwxr-xr-x   0 steve    steve           0 Авг 30  2006 ./kojoney/reports/ip_country
     5    9 -rwxr-xr-x   0 steve    steve        9067 Дек 29  2006 ./kojoney/reports/ip_country/Geography-Countries-1.4.tar.gz
     6  160 -rw-r--r--   0 steve    steve      162827 Апр  6  2006 ./kojoney/reports/ip_country/IP-Country-2.21.tar.gz
#

# rpm -qi archivemount
Name        : archivemount
Version     : 0.8.1
Release     : 2.fc20
Architecture: x86_64
Install Date: Вт 21 Июл 2015 11:29:16 PDT
Group       : System Environment/Libraries
Size        : 75342
License     : LGPLv2+
Signature   : RSA/SHA256, Вс 13 Окт 2013 11:44:05 PDT, Key ID 2eb161fa246110c1
Source RPM  : archivemount-0.8.1-2.fc20.src.rpm
Build Date  : Вс 13 Окт 2013 10:34:48 PDT
Build Host  : buildvm-10.phx2.fedoraproject.org
Relocations : (не переупаковываемый)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.cybernoia.de/software/archivemount/
Summary     : Файловая система на основе FUSE для монтирования сжатых архивов
Description :
Archivemount - это часть связующего кода между libarchive и FUSE. Он может быть
использован для монтирования (возможно, сжатого) архива (как в .tar.gz или .tar.bz2)
и использования его как обычной файловой системы.
#

Да, благодаря FUSE, который позволяет реализовывать файловые системы программами в пользовательском пространстве. Существует множество файловых систем FUSE, реализующих файлы, хранящиеся в чем-то другом, кроме секторов на диске, включая альтернативные представления существующих файловых систем, файлы на удаленной машине, файлы в архиве и т. д.

Вы можете использовать archivemount, чтобы смонтировать конкретный архив в каталог. Архивы можно модифицировать.

mkdir foo
archivemount foo.tar.gz foo
ls foo
echo hello >foo/new-file
fusermount -u foo
rmdir foo
tar tf foo.tar.gz

Вы можете использовать avfs, чтобы получить доступ ко всем архивам, не выполняя конкретного действия для каждого архива. Avfs создает представление всего дерева каталогов под ~/.avfs, где каждый архив имеет сопутствующий каталог ARCHIVE-FILE#, который выглядит так, будто содержит содержимое файла. Содержимое архива доступно только для чтения.

mountavfs
ls ~/.avfs$PWD/foo.tar.gz\#

Ответ или решение

Можно ли хранить и работать с директориями в сжатом виде?

Работа с большими директориями, доставляемыми в виде архивов (например, в формате tarball), может быть затруднительной, так как требуется разархивировать их для выполнения операций. Однако благодаря современным технологиям возможно производить операции с директориями без необходимости их полного распаковки. Рассмотрим несколько решений этой проблемы.

1. Использование archivemount

Одним из наиболее перспективных способов работать с сжатыми директориями является использование archivemount. Это приложение основано на FUSE (Filesystem in Userspace) и позволяет монтировать архивы, такие как .tar.gz или .tar.bz2, в качестве файловой системы. Это означает, что вы можете взаимодействовать с файлами в архиве, как если бы они находились в обычной директории.

Пример использования archivemount

  1. Установка archivemount: Для начала убедитесь, что archivemount установлен. Это можно сделать через системный пакетный менеджер.

  2. Создание точки монтирования: Вам необходимо создать директорию, в которую будет монтироваться архив:

    mkdir /mnt/my_archive
  3. Монтирование архива:

    archivemount download.tar.gz /mnt/my_archive
  4. Работа с файлами: Теперь вы можете перемещаться в директорию и производить любые операции, такие как поиск, создание и редактирование файлов:

    cd /mnt/my_archive
    echo "Hello, World!" > new_file.txt
  5. Размонтирование: После завершения работы не забудьте размонтировать архив:

    fusermount -u /mnt/my_archive

При этом изменения, которые вы внесли в архив, автоматически отразятся в самом файле download.tar.gz при размонтировании.

2. Использование AVFS

Еще одним инструментом для работы с архивами является AVFS (Archie Virtual File System). Оно позволяет получить доступ ко всем архивам в системе, создавая виртуальное представление файловой системы.

Принципы работы с AVFS

  1. Установка AVFS: Так же, как в случае с archivemount, вам нужно установить это программное обеспечение.

  2. Монтаж AVFS:

    mountavfs
  3. Доступ к архивам: После монтирования AVFS создаст специальный каталог, например, ~/.avfs/, в котором каждое сжатое хранилище будет представлено специальной директорией. Вы можете получать доступ к их содержимому, как если бы они были обычными директориями:

    ls ~/.avfs/путь_к_вашему_архиву.tar.gz#

Преимущества использования AVFS

AVFS предоставляет доступ ко всем хранимым в архиве файлам сразу, что делает его удобным для работы с множеством архивов одновременно.

Заключение

С помощью инструментов, таких как archivemount и AVFS, вы можете с легкостью хранить и работать с директориями в сжатом виде. Это обеспечит более эффективное использование дискового пространства и упростит управление большими объемами данных. Выбор инструмента зависит от ваших потребностей: если вам требуется активно изменять содержимое архивов, archivemount будет лучшим выбором. Если же вам нужен доступ к множеству архивов без изменения их содержимого, AVFS станет оптимальным вариантом.

Оцените материал
Добавить комментарий

Капча загружается...