设为首页 加入收藏

TOP

用Python写一个FUSE(用户态文件系统)文件系统(二)
2014-11-24 02:01:50 来源: 作者: 【 】 浏览:1
Tags:Python 一个 FUSE 用户 文件 系统
nk(self._full_path(target), self._full_path(name))

def utimens(self, path, times=None):
return os.utime(self._full_path(path), times)

# File methods
# ============

def open(self, path, flags):
full_path = self._full_path(path)
return os.open(full_path, flags)

def create(self, path, mode, fi=None):
full_path = self._full_path(path)
return os.open(full_path, os.O_WRONLY | os.O_CREAT, mode)

def read(self, path, length, offset, fh):
os.lseek(fh, offset, os.SEEK_SET)
return os.read(fh, length)

def write(self, path, buf, offset, fh):
os.lseek(fh, offset, os.SEEK_SET)
return os.write(fh, buf)

def truncate(self, path, length, fh=None):
full_path = self._full_path(path)
with open(full_path, 'r+') as f:
f.truncate(length)

def flush(self, path, fh):
return os.fsync(fh)

def release(self, path, fh):
return os.close(fh)

def fsync(self, path, fdatasync, fh):
return self.flush(path, fh)

def main(mountpoint, root):
FUSE(Passthrough(root), mountpoint, foreground=True)

if __name__ == '__main__':
main(sys.argv[2], sys.argv[1])


如果你想要运行它,只需要安装fusepy,把这段代码放进一个文件(比如myfuse.py)然后运行 python myfuse.py /你的目录 /挂载点目录 。你会发现 “/你的目录” 路径下的所有文件都跑到”/挂载点目录”,还能像用原生文件系统一样操作它们。


总的来说,我并不认为写一个文件系统就这么简单。接下来要做的是在脚本里添加加密/解密的功能,以及一些帮助类的方法。我的目标是能让它除了有更好的扩展性(因为是用Python写的),以及包含一些针对备份文件的额外特性外,可以成为一个EncFS的完全替代品。


如果你想跟进这个脚本的开发过程,请在下面订阅我的邮件列表,或者在Twitter关注我。一如既往的欢迎反馈(在下面评论就很好)。


推荐阅读:


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Lua 5.2.2编译安装 LuaSocket 库 下一篇Lua加入socket库支持

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: