如何将内存文件系统挂载到目录中
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❯❯❯
干杯
我在 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❯❯❯
干杯