当前位置:  开发笔记 > 编程语言 > 正文

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

运行平台:CentOS需求:类似这样optvirtual.file指向:opt1.fileopt2.fileopt3.file首先,我知道合并的命令,但是这样会新建一个文件,并占用空间我希望的是访问optvirtual.file,相当于系统动
运行平台: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

    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
  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特殊解析

    vim /opt/www/website/1-concat-.txt

    内容

    index.html
    test.html

    注意结尾列也需要有回车符 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 的情况

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有