Иногда я чувствую себя как каталог, иногда я чувствую себя как обычный файл

В организационных целях я хотел бы, чтобы определенный объект файловой системы, который большую часть времени появляется как файл, иногда появляется в виде каталога.

Основная идея состоит в том, что в общем случае для cp , mv , find , updatedb / locate я хотел бы, чтобы объект отображался как отдельный файл. Для других приложений, таких как vlc , rythmbox , feh и okular , я хотел бы, чтобы он отображался как каталог. Может кто-нибудь предложить механизм для этого?

  • Debian и Systemd: ошибка прерывания цикла заказа
  • Почему ZFS большой файл не так быстро, как btrfs?
  • Изменение md5sum после монтирования?
  • Замена Linux для программного обеспечения Apple Keynote?
  • Как я могу разбить USB-накопитель так, чтобы он был загрузочным и имел Windows-совместимый раздел хранения данных?
  • Есть ли параметр / etc / network / interfaces, например wireless-ap, за исключением соединения wpa-ssid / wpa-psk?
  • Для иллюстрации позвольте мне привести пример:

    Я дам объект, который я имею в виду, имя _my_books_on_m4_programming.arch_. Для перемещения / копирования или поиска / поиска этого объекта выглядит как файл, но когда я хочу прочитать книгу в объекте, он выглядит как каталог, например: для команды okular my_books_on_m4_programming.arch/beginner/m4_for_dummies.pdf .

    Я думал о двух с половиной возможных решениях, но нуждался в помощи с одним из них.

    • Первый заключается в том, чтобы изменить мой Linux, чтобы использовать специальный атрибут файловой системы. Если атрибут установлен, то я ищу экологию, например SPECIAL_OBJECT_IS_FILE . Если он установлен, я рассматриваю его как файл. Если он не установлен, я рассматриваю его как каталог. Проблема с этим подходом заключается в том, что я не вижу, как его реализовать, не изменяя практически всю систему.

    • Второй способ – хранить файлы в архиве (например, tar, zip, rar), который я монтирую (rw) в какой-то каталог. Для обработки объекта в виде архива обратитесь к исходному архиву, чтобы обработать объект как каталог, относящийся к точке монтирования. Это возможно?

    • Метод половин – это просто поворот на втором, вместо того, чтобы монтировать архив, я создаю ссылку на него. Возможно ли подобное?

    Я не могу поверить, что никто никогда не хотел делать подобное, поэтому я подозреваю, что есть какой-то способ. Suggestionss?

    ОК. Признаюсь, у меня возникли проблемы с заголовком моего вопроса, поэтому я попытался сделать шутку из очень старой рекламы – извините.

  • Почему USB не работает в Linux, когда он работает в UEFI / BIOS?
  • Имя пользователя по умолчанию для общего ресурса Samba, которое не является именем пользователя в клиентской системе
  • Какое состояние (состояния) процесса пересчитывается на время процессора?
  • Кто является пользователем -bash для пользователя на моем сервере?
  • Я не могу изменить пароль пользователя на ubuntu
  • NSLookup, как интерпретировать вывод
  • 2 Solutions collect form web for “Иногда я чувствую себя как каталог, иногда я чувствую себя как обычный файл”

    Я не совсем понимаю, почему вы не хотите, чтобы файлы отображались как отдельные файлы в некоторых случаях. В конце концов, если my_books_on_m4_programming.arch – это каталог, вы все равно можете скопировать его с помощью cp -rp , найти его с помощью locate и так далее.

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

    В частности, AVFS создает архивы и удаленные файлы в виде каталогов. Я думаю, что это самое близкое к тому, что вы ищете.

     $ mountavfs $ ls my_books_on_m4_programming* my_books_on_m4_programming.tgz $ tar tzf my_books_on_m4_programming.tgz beginner/m4_for_dummies.pdf $ ls ~/.avfs$PWD/my_books_on_m4_programming.tgz\#/ beginner $ okular ~/.avfs$PWD/my_books_on_m4_programming.tgz\#/beginner/m4_for_dummies.pdf 

    Вы можете использовать файловые системы loopback.

    Сначала создайте файл, который будет содержать вашу файловую систему:

     dd if=/dev/zero of=~/myfilesys bs=8K count=256 

    Это создаст пустой файл размером 2 ГБ. Затем вам нужно прикрепить его к устройству loopback:

     losetup /dev/loop0 ~/myfilesys 

    Теперь создайте файловую систему:

     mkfs -t ext3 /dev/loop0 

    Наконец, смонтируйте свою файловую систему:

     mkdir ~/myfilesys.d mount /dev/loop0 ~/myfilesys.d 

    Когда вы закончите:

     umount /dev/loop0 losetup -d /dev/loop0 

    И повторное использование позже:

     losetup /dev/loop0 ~/myfilesys mount /dev/loop0 /mnt/myfilesys.d 

    (Да, я знаю, что вы можете комбинировать шаги losetup и mount , но для иллюстративных целей становится яснее видеть, что происходит, разбивая их).

    Теперь файл ~/myfilesys будет выглядеть и действовать как файл для всех команд, но при установке вы можете увидеть файлы в этой файловой системе в ~/myfilesys.d .

    Linux и Unix - лучшая ОС в мире.