Как смонтировать файловую систему памяти в каталог

У меня есть файловая система памяти в Python, созданная следующим образом:

import fs
mem_fs = fs.open_fs('mem://')
mem_fs.makedirs('/dir1')
with mem_fs.open('/dir1/file1', 'w') as file1:
    file1.write('test')

Я хочу смонтировать эту файловую систему в каталог в файловой системе моей ОС (например, /home/user/mem_dir). Я могу создать объект, который будет ссылаться на файловую систему ОС:

os_fs = fs.open_fs('/home/user/mem_dir')

Но тогда я понятия не имею, как монтировать mem_fs на os_fs. Я пробовал использовать класс MountFS, но он создает только виртуальную файловую систему. Мне нужно создать точку монтирования таким образом, чтобы другие внешние приложения (например, nautilus) могли ее видеть и копировать файлы туда и обратно. Любая обратная связь будет оценена.

0 ответов

У меня было такое же требование, и я справился с этим таким образом

from fs.tempfs import TempFS
tmp = TempFS(identifier='_toto', temp_dir='tmp/ramdisk/')

он монтирует, создает каталог с произвольным именем с суффиксом _toto

tmp / ramdisk ❯❯❯ ls
tmpa1_4azgi_toto

который полностью доступен как стандартная файловая система на хосте, как в вашем коде python

tmp/ramdisk/tmpa1_4azgi_toto ❯❯❯ mkdir test                                                                    
tmp/ramdisk/tmpa1_4azgi_toto ❯❯❯ ls                                                                            
test

 >>> tmp.listdir('/')
['test']

это выглядит довольно волшебно, так как вообще не отображается в файловой системе смонтированного хоста

 ❯❯❯ df -ah | grep -E '(ramdisk|tmp)'                                              
tmpfs                       785M    1,7M  783M   1% /run
tmpfs                       3,9G    195M  3,7G   5% /dev/shm
tmpfs                       5,0M    4,0K  5,0M   1% /run/lock
tmpfs                       3,9G       0  3,9G   0% /sys/fs/cgroup
tmpfs                       785M     36K  785M   1% /run/user/1000

и он полностью исчезает, когда заканчивается ваш код или когда вы вызываете

>>> tmp.close()

tmp / ramdisk ❯❯❯ ls
tmp / ramdisk ❯❯❯

Ура

Другие вопросы по тегам