Maison  >  Article  >  développement back-end  >  linux平台上,有无软件可以制作虚拟文件指向多个文件,避免重复占用空间?

linux平台上,有无软件可以制作虚拟文件指向多个文件,避免重复占用空间?

WBOY
WBOYoriginal
2016-12-05 13:44:071062parcourir

运行平台: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...

  1. 安装编译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>
  2. 使用挂载的方式启动一个目录
    原目录:
    /opt/www/website/
    里面包含文件
    index.html test.html
    创建一个待挂载的目录
    mkdir /opt/www/website_mnt
    执行
    concatfs /opt/www/website/ /opt/www/website_mnt
    没报错就已经在后台运行

  3. 创建一个特殊的文件名 包含-concat-

    只要包含 -concat- 将会被concatfs特殊解析

    <code>vim /opt/www/website/1-concat-.txt</code>

    内容

    <code>index.html
    test.html</code>

    注意结尾列也需要有回车符 LF,不然最后那个文件不会加载

  4. 现在访问 /opt/www/website_mnt/1-concat-.txt 便会返回这两个文件合并之后的数据
    相当于这两个文件动态合并了,其实在物理上并没有合并
    注意是 website_mnt/1-concat-.txt 目录
    访问原目录的 website/1-concat-.txt 仍然是原文件

  5. PS: 并没有测试写入 /opt/www/website_mnt/1-concat-.txt 的情况

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn