创建允许挂载目录的程序

时间:2012-03-05 14:22:29

标签: c++ linux

我希望用C ++创建一个程序,允许客户端实际上安装服务器的目录,而不是使用该目录及其包含的文件 - 如果它们存储在本地。

服务器将在linux上运行,但客户端可以是linux或windows。虽然我不介意只开始使用linux,只要可以添加功能来支持Windows客户端,而无需重写很多代码。

我如何创造这样的东西?我在过去几周里已经学到了很多关于套接字的知识,我假设它起了作用,但我还没有找到如何允许挂载目录,然后在文件出现问题时执行某些操作在那个目录中。

例如,当用户保存文件时,除了保存文件外,服务器还应该能够在另一个目录中创建所述文件的带时间戳的备份。

我从哪里开始学习如何做到这一点?

2 个答案:

答案 0 :(得分:1)

在Linux下,现代桌面环境已经包含了这种功能。使用安装和保险丝,您还可以安装目前可用的大多数网络文件系统。

如果你决定继续这样做,我想你需要选择什么级别来进行抽象。是否足以让桌面环境抽象,比如在KDE中制作一个kioslave,这会限制你作为用户使用KDE应用程序。或者你应该选择FUSE模块,它可以在文件系统级别上工作,并且可以与所有应用程序一起使用,当然缺少了kioslaves的UI集成。

在Windows下我认为你唯一的方法是使用提供的虚拟文件系统api,我可以发誓我最近读过这样的事情,但我找不到它。我相信探险家的整合也可以,但我不确定。

答案 1 :(得分:0)

如果我正在编写这样的程序,我会使用Qt libraries因为我喜欢它们并且它们在多个平台上运行良好。 C ++纯粹主义者经常因为各种原因(例如他们一般的'javaish'性质)而不喜欢它们,所以你可能想要查看boost提供的文件系统实用程序。

来自Qt的QFileSystemWatcher类可以通知您文件和目录的更改。

当然,您需要一个套接字连接,并决定在来回发送消息时使用的协议。通常最好使用通用协议(例如JSONGoogle's protocol buffers),以便可以轻松开发其他工具。

我在评论中提到了git,因为通常情况下,提供版本控制功能的程序会使用现有工具 - 因此您的程序可以调用git来获得强大而强大的版本控制功能。 / p>