我有一个运行 Ubuntu 的本地开发 Web 服务器。我还有一台运行 OS X 10.6 的 iMac,我使用它作为客户端,也是我的开发机器。
我目前已在 Ubuntu 服务器上安装了 Samba 服务器。我已为所有网站目录设置了共享。
然后我使用我的 Mac 和 Coda 通过它们的共享来编辑文件。
这种方法通常很有效,但我注意到我的 Mac._filename
到处都在写入大量资源分支文件。我发现了有关这些文件的内容:
这些文件是在不支持完整 HFS 文件特性的卷上创建的(例如 ufs 卷、Windows 文件共享等)。将 Mac 文件复制到此类卷时,其数据分支将存储在文件的常规名称下,而其他 HFS 信息(资源分支、类型和创建者代码等)将存储在第二个文件(AppleDouble 格式)中,文件名称以“._”开头。(当然,这些文件对于 OS-X 来说是不可见的,但对于其他操作系统来说却不是;这有时会很烦人……)
是否有人知道在 Mac 客户端和 Linux 服务器之间共享文件的最兼容两种操作系统的方法?
理想情况下,它需要支持 HFS 文件系统,以便不会创建资源分支,并且它还需要支持服务器和客户端之间的权限。
答案1
Netatalk 是您的答案。
由于新版本的 OS X 需要加密身份验证,因此可能需要一些时间才能完成。但这是可行的,而且我已经做过两次了。
根据我自己的笔记 - 可能有点混乱:
afpd.conf 必须包含- -tcp -noddp -uamlist uams_dhx2_passwd.so
- uams_dhx2_passwd 模块很重要,以允许身份验证。
如果系统上没有必要的软件包,它将无法编译,它只是默默地不编译它,所以要确保它们在那里。
$ ./configure --enable-redhat-sysv --prefix=/data/software/netatalk
版本:2.2.3
AppleVolumes 共享如下:
/data/shared/ ShareName allow:user1,user2 cnidscheme:dbd options:usedots,upriv dperm:0770 fperm:0660
用户是系统用户,客户端的权限将是其经过身份验证的用户的权限。
为了向网络广播,请使用 Avahi。这是 afpd 服务定义:
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>
我希望这能让你理解。它取自我自己的笔记(我碰巧用 markdown 保存),所以它实际上并不适合任何人,除了我。但我希望它对你来说足够有意义。
答案2
您可以使用以下选项强制 Samba 对其他 SMB 客户端隐藏这些点文件
hide dot files = yes
在你的 smb.conf 中。
这种方法在隐藏文件方面效果不错(只要用户不告诉 Windows 资源管理器显示隐藏文件),但并不能解决根本问题,因为当涉及非 Mac OS 系统时,文件和相应的点文件往往会很快不同步。当您在 Linux 或 Windows 中重命名、删除或移动文件时,就会发生这种情况,而点文件不会相应更改。
为了真正解决几年前的问题,我不得不在后端切换到 MacOS X 服务器,但这有一些其他缺点,我不确定我是否会再次这样做。
答案3
在 samba 中使用“否决文件”指令怎么样?
就像是:
[sharename]
... other settings...
Veto files = /*._*
我从来没有用过它,但它应该可以工作:)
參考文獻:http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#VETOFILES