如何将内存文件系统挂载到目录中

How to mount a memory filesystem onto a directory

我在 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')

我想将此文件系统挂载到我的 OS 文件系统(例如 /home/user/mem_dir)中的一个目录中。我可以创建一个引用 OS 文件系统的对象:

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

但是我不知道如何将 mem_fs 安装到 os_fs 上。我尝试使用 MountFS class,但它只会创建一个虚拟文件系统。我需要以其他外部应用程序(例如 nautilus)能够看到它并在那里复制文件 to/from 的方式创建一个挂载点。如有任何反馈,我们将不胜感激。

我也有同样的需求,我是这样处理的

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❯❯❯

干杯