• [原]fuseconvmvfs 0.2.6介绍及使用


    1、 摘要

    fuse-convmvfs是一个基于FUSE(Filesystem in USErspace)的用户态文件系统, 用于
    将文件系统树中的一个分支的文件名的编码映射为另一种编码,并且将其装载在
    一个其他装载点下。


     2、 动机

      Convmv(http://osx.freshmeat.net/projects/convmv/)是一个现有的用于转换
    文件名编码的小工具。 受这个软件的启发,开发出了convmvfs,一个用于转换
    文件名编码的文件系统。

    一个实用的例子:在中国,计算机系统中广泛使用一种国家标准GB2312来存储中
    文,这种习惯导致了很多中文软件的ftp客户端只识别远端服务器上的GB2312编
    码的文件名。然而现在用于架设ftp服务器的*nix系统越来越倾向于使用UTF-8编
    码来存储文件名。为了解决这个问题,使用本软件,可以达到这样的效果:假设
    一个FTP服务器将/ftp/目录设置为匿名用户登录的ftp根目录,并且其下的文
    件名是UTF-8编码的,为了让windows上的只能识别GB2312编码的客户端能够正常
    访问ftp,可以用convmvfs软件将/ftp/pub_gbk映射/ftp/pub目录,任何访问
    /ftp/pub_gbk目录的都将得到GB2312编码的文件名,但是文件内容将保持无变化。


     3、 安装

      本软件需要你的系统安装有FUSE 2.5或者更高的版本,FUSE可以从这里得到:

    http://fuse.sourceforge.net

    成功安装和配置FUSE后,在convmvfs的目录下执行下列命令:

    ./configure
    make
    make install (as root)

    这样就安装完毕了。你可以执行convmvfs --help得到帮助信息。

    如果你是从cvs中得到最新软件, 你需要首先执行'autoreconf -iv'。

    注:在./configure的时候,出现了一个BUG,大致过程是这样的:

    ……

    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    checking for CONVMVFS... configure: error: Package requirements (fuse >= 2.5) were not met:

    No package 'fuse' found

    Consider adjusting the PKG_CONFIG_PATH environment variable if you
    installed software in a non-standard prefix.

    ……

    在网上查找相关的解决方法,未果。只有按照提示和给出的log解决。经查询,fuse在安装的时候会生成一个fuse.pc的文件,里面记录了fuse的版本、路径等相关信息,fuse-convmvfs 需要根据该文件来查看fuse的版本,如果找不到该文件,就会出现上述错误报告。所以在安装fuse-convmvfs 的时候,需要一个环境变量来指定该文件的路径。该文件默认安装fuse的时候会被安装到/usr/local/lib/pkgconfig/目录下面,所以在执行./configure之前需要先提供该环境变量:export   PKG_CONFIG_PATH=/usr/local/lib/pkgconfig,然后再执行./configure就可以了。


     4、 如何使用

    一旦convmvfs被安装,运行是相当简单的:
    usage: convmvfs mountpoint [options]

    general options:
    -o opt,[opt...] mount options
    -h --help print help
    -V --version print version

    FUSE options:
    -d -o debug enable debug output (implies -f)
    -f foreground operation
    -s disable multi-threaded operation

    -o allow_other allow access to other users
    -o allow_root allow access to root
    -o nonempty allow mounts over non-empty file/dir
    -o default_permissions enable permission checking by kernel
    -o fsname=NAME set filesystem name
    -o large_read issue large read requests (2.4 only)
    -o max_read=N set maximum size of read requests

    -o hard_remove immediate removal (don't hide files)
    -o use_ino let filesystem set inode numbers
    -o readdir_ino try to fill in d_ino in readdir
    -o direct_io use direct I/O
    -o kernel_cache cache files in kernel
    -o umask=M set file permissions (octal)
    -o uid=N set file owner
    -o gid=N set file group
    -o entry_timeout=T cache timeout for names (1.0s)
    -o negative_timeout=T cache timeout for deleted names (0.0s)
    -o attr_timeout=T cache timeout for attributes (1.0s)

    CONVMVFS options:
    -o srcdir=PATH which directory to convert
    -o icharset=CHARSET charset used in srcdir
    -o ocharset=CHARSET charset used in mounted filesystem

    注意:
    * 如果你使用普通用户运行软件,首先需要确定是否有读写权限于/dev/fuse文
    件。

    * 使用'iconv --list'可以看到软件支持哪些编码。

    * 使用allow_other选项可以让其他用户访问文件系统。

    * 重要:srcdir和文件系统挂载点不能是同一个文件夹,否则文件操作将陷入
    不可中断的死循环。一定要避免这种情形。

    运行实例:
    * 挂载文件系统
    $convmvfs /ftp/pub_gbk -o srcdir=/ftp/pub, icharset=utf8,ocharset=gbk

    * 卸载文件系统

    $fusermount -u /ftp/pub_gbk


    注: 在使用过程中,可能会出现找不到libfuse.so的错误,那是因为没有把libfuse.so的链接库添加到环境变量中,所以,你需要手动的添加这个环境变量,方法是:在
    $Home/.bashrc中的末行添加

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib

    然后,执行. ~/.bashrc即可。


    作者:yuandianlws 发表于2011-11-10 9:13:25 原文链接
    阅读:547 评论:0 查看评论
  • 相关阅读:
    ajax 跨域 Access-Control-Allow-Origin
    关于 请求参数 传递时 参数字符串里面包含 特殊符号的 解决~
    鼠标滚动事件
    js 选择随机数
    html 关于一行两列 高度不定的实现(不用table)
    关于php跨域操作(主域不同)
    写规范的javascript脚本代码 之for in
    windows服务等获取文件路径文件目录方法
    C#如何在控制台应用程序中加入配置文件
    easyui Microsoft JScript 运行时错误: “JSON”未定义
  • 原文地址:https://www.cnblogs.com/yuandianliws/p/3570629.html
Copyright © 2020-2023  润新知