最佳做法与WebDAV链接,因为FollowSymLinks不允许显示符号链接

符号链接是Linux上广泛使用的一种做法,可以在另一个位置使资源(例如目录)可用,而不必维护它的多个副本。 这在许多应用程序中实现,例如具有资源树和具有用户目录的树。每当用户打算使用某个资源时,符号链接将被放入他或她可访问的目录中。 给予足够的权限,他或她可以使用资源(在其中创build文件),这些文件可能被写入不同的位置,例如在具有足够空间的设备上。 如果用户使用Samba访问他的主目录,这工作正常。

但是,使用WebDAV有很好的理由,端口问题就是其中之一。 将这样的应用程序移植到WebDAV时的问题:无论是否设置了FollowSymLinks,Apache的mod_dav都以某种方式写入了符号链接。 这种行为是由communtiy的目的 ,因此一个错误报告从来没有解决。

但是,如何将期望的行为移植到WebDAV? 我尝试使用硬链接,但硬链接目录似乎根本不工作。 使用mount可能会有效,但是我无法估计数百个坐骑的副作用。 有没有我现在没有过来的select? 有没有一个已知的“最佳实践”? 还是WebDAV不适合作为Samba的替代品?

这似乎是mount --bind是我正在寻找的解决scheme。 对于使用ln -s vs mount -bind有一些原因,但是在linux系统上多次挂载一个设备似乎是很常见的做法(甚至在man mount单个文件到其他文件也是如此)似乎系统稳定性没有受到严重影响。

只有sowbug当然是,如果挂载点没有通过修改/etc/fstab来修复,在服务器重启时会丢失。

对WebDAV还有一个词:有一个互联网草案(已经过时了)扩展了WebDAV规范,以便允许“高级集合”,它也应该提供处理链接的能力。 大约在1998年到2002年间,这个问题已经花在了这个问题上,然后这个顶峰悄无声息地消失了。 你可能会发现在互联网上的几个页面声称WebDav通过高级集合来支持符号链接 ,但目前情况并非如此 。 当前(v.1.0.3-1.3.6) mod_dav源代码读取:

 /* ### for now, only process regular files (eg skip symlinks) */ if (S_ISREG(fsctx->info1.finfo.st_mode)) { 

人们可能会预料到, Tomcat 6的WebDAV模块可能不知道符号链接(例如,这种文件系统特殊的东西在版本7之前没有被纳入到Java模型中),但它显示了相同的行为,因此符合规格也一样。

最后, mod_dav-1.0.3-1.3.6的一个符号链接补丁已经发布了,但是你必须将这个补丁应用到源代码上并且自己编译模块…我没有试过。