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 查看评论

转载于:https://www.cnblogs.com/yuandianliws/archive/2011/11/10/3570629.html

[原]fuse-convmvfs 0.2.6介绍及使用相关推荐

  1. Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用示例

    Linux内核 eBPF基础 kprobe原理源码分析:基本介绍与使用示例 荣涛 2021年5月11日 kprobe调试技术是为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术. 利用kpro ...

  2. creo视图管理器使用方法_Creo Parametric 4.0 界面基础介绍

    原标题:Creo Parametric 4.0 界面基础介绍 作者:科虫先生 Cero4.0是PTC最新的版本,正在使用主流proe5.0的朋友对它的界面与操作还是不习惯.机械六空间是深度系统地和大家 ...

  3. TypeScript 3.0 新功能介绍(二)

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript 3.0 新功能介绍(二) TypeScript 3.0 新功能介绍(二) New unknown ...

  4. 快嘉开发框架1.0和示例介绍及使用说明

    2019独角兽企业重金招聘Python工程师标准>>> 快嘉开发框架1.0和示例介绍 快嘉开发框架将一个标准的J2EE项目拆分为基础组件(Base).持久层组件(Persistenc ...

  5. 书评:JavaFX 2.0:示例介绍

    尽管Oracle在JavaOne 2010和JavaOne 2011上对JavaFX的更改使我从怀疑论者转变为对JavaFX的信奉者 ,但是JavaFX愿景的转变并非没有缺点 . 特别是,JavaFX ...

  6. 为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 NX10.0 新功能介绍视频教程专辑 PLM之家NX10.0界面基础新功能--1 NX新界面增强.mp4 PLM之家NX10.0界面基础新功能--2 问题 ...

  7. redhat linux 安装ftp服务,RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器

    本文以RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器. 安装服务器程序 程序下载地址:,目前最新版本为2.0.3,源程序文件名为vsftpd-2.0.3.tar.gz. ...

  8. hadoop3.0新特性介绍

    hadoop3.0新特性介绍 1. 基于jdk1.8(最低版本要求) 2. mr采用基于内存的计算,提升性能(快spark 10倍) 3. hdfs 通过最近black块计算,加快数据获取速度(块大小 ...

  9. 华为认证云服务工程师(HCIA-Cloud ServiceV3.0)-- 认证介绍

    华为认证云服务工程师(HCIA-Cloud ServiceV3.0)-- 认证介绍 来源:华为认证官网 文章目录 通过认证验证的能力 建议掌握的知识 面向对象 考试范围 知识点占比 认证考试 重认证 ...

  10. 蓝牙BLE5.0扩展广播介绍

    蓝牙BLE5.0扩展广播介绍 前言 广播包基本介绍 扩展广播包结构 总结 author :cbk 前言 在2016年12月更新的蓝牙Core_v5.0中,更新了LE Advertising Exten ...

最新文章

  1. Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)
  2. 备份mysql的批处理命令
  3. SAP UI5 应用开发教程之四十一 - Chrome 扩展 UI5 Inspector 的离线安装和使用方法
  4. 关于新版VLC无法看RTSP的视频的问题-转
  5. python输入的字符串转换为对应的数字类型_第1期 | psychopy:数据类型及运算符
  6. 半导体物理与器件_哀悼!我校校友、国际著名半导体器件物理学家、微电子学家陈星弼院士逝世...
  7. input 文件提交 按钮制作
  8. PyTorch使用LMDB数据库加速文件读取
  9. 创建oracle自增序列
  10. Vim,人类史上最好用的文本编辑器!从此以后你就是一个善良的极客!
  11. 360算法工程师初面总结
  12. 地磁基本知识(二)地磁异常
  13. 实验3 STP简单配置及介绍
  14. 华为防火墙笔记-加密与证书
  15. Java树形菜单的构建、遍历以及获取树形菜单的Id集合List
  16. 菲律宾德拉斯大学计算机专业,热门专业选择
  17. python htmlparser怎么用,在Python中高效地使用HTMLParser
  18. 凭借扫地机器人,科沃斯能“扫出”舒适区吗?
  19. 罗小飞:阿里云边缘云,从资源到场景的产品演进
  20. 很好用的FreeCAD

热门文章

  1. 开源医学图像数据集(资源整合)
  2. PlanAhead工具应用
  3. 1102: 火车票退票费计算(函数专题)
  4. [剑指Offer]5.二维数组中的查找
  5. 手把手教你搭建微信点餐系统环境(springmvc+ibatis+maven+git)
  6. UVa 11059 - Maximum Product
  7. Spark和Hadoop,孰优孰劣?
  8. Java基础——常用Map的实现细节
  9. 用iptable简单的给web服务器做安全
  10. ASP.NET MVC Framework体验(1):从一个简单实例开始