Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141024
  • 博文数量: 17
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-30 14:55
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(12)

2008年(4)

我的朋友

分类: LINUX

2009-01-01 23:15:26

Abstract
========


This is a filesystem client use the FUSE(Filesystem in
USErspace) interface to convert file name from one charset
to another.


Motivation
==========


Convmv()is a
utility to converts filenames (not file content),
directories, and even whole filesystems to a different
encoding. Inspired by this tool, born was the convmvfs which
mirror a whole filesystem tree from one charset to another.

For example, in China there's a National Standard called
GB2312 which defined a charset to present most of the
Chinese character. And many ftp client used in China only
accept and show filename in GB2312. But in *nix world i18n
is more acceptable than l10n so many *nix server use UTF-8.
For example, there's a linux hosted box run a ftp server app
on it. The ftp server export /ftp/pub to anonymous access in
which all filenames are in UTF-8 charset. Now we can make a
directory called /ftp/pub_gb2312 and use our convmvfs tool to
mount a special fuse filesystem on /ftp/pub_gb2312, which
hotly convert the filename in /ftp/pub from UTF-8 to GB2312
but leave the contant unchanged.


Install
=======


First you need to download FUSE 2.5 or later from:



After installing FUSE, compile convmvfs the usual way:

./configure
make
make install (as root)

And you are ready to go.

If checking out from CVS for the first time also do
'autoreconf -iv' before doing './configure'.


How to use
==========


Once convmvfs is installed running it is very simple:

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

Note:
* If you use normal user to mount file system be sure to have
r/w permision to /dev/fuse.

* use iconv --list to see which charsets are supported.

* to allow other user to access the mount point use allow_other option

Sample use:

* to mount
$convmvfs /ftp/pub_gbk -o srcdir=/ftp/pub, \
icharset=utf8,ocharset=gbk

* to umount
$fusermount -u /ftp/pub_gbk

阅读(944) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~