Вопрос или проблема
Мне нужно работать с многими большими каталогами, которые поставляются в виде архива 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
-
Установка archivemount: Для начала убедитесь, что archivemount установлен. Это можно сделать через системный пакетный менеджер.
-
Создание точки монтирования: Вам необходимо создать директорию, в которую будет монтироваться архив:
mkdir /mnt/my_archive
-
Монтирование архива:
archivemount download.tar.gz /mnt/my_archive
-
Работа с файлами: Теперь вы можете перемещаться в директорию и производить любые операции, такие как поиск, создание и редактирование файлов:
cd /mnt/my_archive echo "Hello, World!" > new_file.txt
-
Размонтирование: После завершения работы не забудьте размонтировать архив:
fusermount -u /mnt/my_archive
При этом изменения, которые вы внесли в архив, автоматически отразятся в самом файле download.tar.gz при размонтировании.
2. Использование AVFS
Еще одним инструментом для работы с архивами является AVFS (Archie Virtual File System). Оно позволяет получить доступ ко всем архивам в системе, создавая виртуальное представление файловой системы.
Принципы работы с AVFS
-
Установка AVFS: Так же, как в случае с archivemount, вам нужно установить это программное обеспечение.
-
Монтаж AVFS:
mountavfs
-
Доступ к архивам: После монтирования AVFS создаст специальный каталог, например,
~/.avfs/
, в котором каждое сжатое хранилище будет представлено специальной директорией. Вы можете получать доступ к их содержимому, как если бы они были обычными директориями:ls ~/.avfs/путь_к_вашему_архиву.tar.gz#
Преимущества использования AVFS
AVFS предоставляет доступ ко всем хранимым в архиве файлам сразу, что делает его удобным для работы с множеством архивов одновременно.
Заключение
С помощью инструментов, таких как archivemount и AVFS, вы можете с легкостью хранить и работать с директориями в сжатом виде. Это обеспечит более эффективное использование дискового пространства и упростит управление большими объемами данных. Выбор инструмента зависит от ваших потребностей: если вам требуется активно изменять содержимое архивов, archivemount будет лучшим выбором. Если же вам нужен доступ к множеству архивов без изменения их содержимого, AVFS станет оптимальным вариантом.