用户空间文件系统 fufs
本文导语: FUFS 是一款基于linux c语言版fuse 开发的用户空间文件系统,实现了在linux 中对新浪微盘的基本操作。文件系统实现了对新浪微盘API的封装,当文件系统挂载到用户linux 的某个文件夹下,用户只需像普通文件一样操作自己微盘中...
FUFS 是一款基于linux c语言版fuse 开发的用户空间文件系统,实现了在linux 中对新浪微盘的基本操作。文件系统实现了对新浪微盘API的封装,当文件系统挂载到用户linux 的某个文件夹下,用户只需像普通文件一样操作自己微盘中的目录和文件。
FUFS的实现,通过fuse 来获取用户文件操作的指令,转而通过fufs自行分装的文件操作函数,来实现对新浪微盘里面的文件的操作。 通过libcurl 库,来实现http报文的发送和接受,通过glib库实现fufs 文件系统inode节点的建立,查询,删除,插入。通过json-c库,实现对新浪微盘服务器响应报文的解析。
FUFS实现的功能
1 挂载文件系统到linux 中某个文件
2 查询新浪微盘根目录文件
3 查询新浪微盘中某个文件
4 各种类型文件thumbnail的显示
5 文件夹属性的获取
6 新浪微盘里的文件,linux环境读取
7 新浪微盘文件的读写
修改后文件
8 文件系统的卸载
注意:
由于新浪微盘API要求,对用户获取的token,必须在10-15分钟之间进行keep_token操作,因此在实现过程中,FUFS
先将获取的token保存在/tmp/token.log文件中,当fufs文件系统完成挂载后,需要运行src目录里面的token_keep_thread
小程序,它通过读取token.log里的token,在用户指定时间里面进行keep_token操作,保证token的有效性。
目前还没有完成的工作
1 文本文件汉字打开时出现乱码。(主要原因是缺少urlencode函数,对从新浪微盘读取数据的解码获取中文)
2 文件重命名,目录重命名 。即fuse里面的rename函数未完成。
感谢:非常感谢kpfs文件系统的作者Tao Yu ,给我实现新浪微盘文件系统FUFS带来了很多灵感和帮助.
如果有什么问题需要交流,或许你想帮助完善FUFS文件系统,你可以发我邮件。
我的邮箱地址:handsomestone@gmail.com