Maison >développement back-end >tutoriel php >linux平台上,有无软件可以制作虚拟文件指向多个文件,避免重复占用空间?
运行平台:CentOS
需求:类似这样
/opt/virtual.file
指向:/opt/1.file
/opt/2.file
/opt/3.file
首先,我知道合并的命令,但是这样会新建一个文件,并占用空间
我希望的是访问 /opt/virtual.file
,相当于系统动态把这三个文件合并成一个当成一个来访问
这个需求并不是使用nginx_http_concat中合并js/css的请求
因为上传文件的时候为了保证稳定性,按照 5M/块 的情况下分隔上传,虽然也可以使用程序合并这些块,但是有没软件可以让系统做虚拟文件,指向到这些分块,这样就可以不用合并了
运行平台:CentOS
需求:类似这样
/opt/virtual.file
指向:/opt/1.file
/opt/2.file
/opt/3.file
首先,我知道合并的命令,但是这样会新建一个文件,并占用空间
我希望的是访问 /opt/virtual.file
,相当于系统动态把这三个文件合并成一个当成一个来访问
这个需求并不是使用nginx_http_concat中合并js/css的请求
因为上传文件的时候为了保证稳定性,按照 5M/块 的情况下分隔上传,虽然也可以使用程序合并这些块,但是有没软件可以让系统做虚拟文件,指向到这些分块,这样就可以不用合并了
这个必须使用fuse来实现,以及大神写的:https://github.com/schlaile/c...
安装编译concatfs
<code>yum install fuse fuse-devel git clone https://github.com/schlaile/concatfs.git cd concatfs/src gcc -Wall concatfs.c `pkg-config fuse --cflags --libs` -o concatfs cp ./concatfs /bin</code>
使用挂载的方式启动一个目录
原目录:/opt/www/website/
里面包含文件 index.html
test.html
创建一个待挂载的目录 mkdir /opt/www/website_mnt
执行 concatfs /opt/www/website/ /opt/www/website_mnt
没报错就已经在后台运行
创建一个特殊的文件名 包含-concat-
只要包含 -concat- 将会被concatfs特殊解析
<code>vim /opt/www/website/1-concat-.txt</code>
内容
<code>index.html test.html</code>
注意结尾列也需要有回车符 LF,不然最后那个文件不会加载
现在访问 /opt/www/website_mnt/1-concat-.txt
便会返回这两个文件合并之后的数据
相当于这两个文件动态合并了,其实在物理上并没有合并
注意是 website_mnt/1-concat-.txt
目录
访问原目录的 website/1-concat-.txt
仍然是原文件
PS: 并没有测试写入 /opt/www/website_mnt/1-concat-.txt
的情况