Dropbox 及其类似“文件夹”的设计

Posted

技术标签:

【中文标题】Dropbox 及其类似“文件夹”的设计【英文标题】:Dropbox and its "Folder" like design 【发布时间】:2012-11-30 07:13:28 【问题描述】:

我想从程序员的角度(最好是 C# 或 Java)想知道,在操作系统中操作文件夹以执行您想要的操作(例如像 FTP 一样工作)有多难?

image http://www.jacks-log.de/wp-content/uploads/2011/02/Dropbox-Wurmloch-1.png

自从几年前我听说了 Dropbox,我一直想知道这样做涉及到什么?

【问题讨论】:

可以看看Java NIO特性Watching a Directory for Changes 【参考方案1】:

特别是谈到 Dropbox,他们没有做任何棘手的事情 - 只是使用 Windows 用户模式 ​​API 提供的机制监视一个常规文件夹。

不过,使用内核模式驱动程序可以做更强大、更有趣的事情。

您可以做的第一件事是创建一个虚拟磁盘并将其映射到文件夹。这样,您的代码(在我们产品的帮助下,无论是内核模式还是用户模式)都能够处理所有操作系统对该文件夹中文件的请求。该文件夹将不存在于磁盘上,但将是虚拟的。您可以即时从远程服务器中选择数据,将它们写入远程服务器等。特别是,您可以将远程 SFTP 服务器映射到文件夹(使用 FTP 时事情会稍微复杂一些,因为 FTP 不支持部分上传)。一些云提供商完全按照我的描述进行 - 他们提供虚拟磁盘或虚拟文件夹,这是他们云服务的“门”,当您从此类虚拟文件夹或磁盘读取或写入数据时,数据会从/到云服务器。

接下来是在文件系统过滤驱动程序的帮助下,您可以拥有一个真实的文件夹,但可以动态提供文件内容。这就是一些文件夹加密器的工作方式(它们在将文件数据写入真实磁盘时对其进行加密,如果没有激活此加密器,您将从该文件夹中的文件中读取刚刚加密的“垃圾”)。

现在,使用文件系统过滤器驱动程序,您可以控制访问文件夹的人员和方式,即您可以对文件夹内容的访问进行细粒度控制(将其与加密相结合,您可以获得方便的数据保护机制)。

【讨论】:

以上是关于Dropbox 及其类似“文件夹”的设计的主要内容,如果未能解决你的问题,请参考以下文章

使用 Dropbox API 列出 Dropbox 的所有文件夹和文件

在 Dropbox 文件夹中设置 htdocs 文件夹 - 禁止访问 - Linux

Dropbox 文件夹下载问题 (c#)

为啥不建议将 git 存储库放在 Dropbox 文件夹中?

以编程方式从共享 Dropbox 文件夹链接下载内容

如何更改Dropbox的同步文件夹?