Как смонтировать файловую систему памяти в каталог
У меня есть файловая система памяти в 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 ❯❯❯
Ура