Samba or Netatalk?

At home I am using a Mandrake Linux 9 box as my everything server, and that also includes my file server. It has around 70Gb of live volume spanning on two hard drives, and it contains all my document files, some of Vivian's files, lots of shared documents, my MP3 archive, website data, etc. Over the years I have been running Samba to serve my network of Windows boxes, and Samba has pretty decent support on that, plus continuous improvement over the years. Now I am coming to the Mac land, and I too want my iBook to share the same files stored on the file server.

Mac OS X comes with Windows file sharing support built in, so naturally I gave Samba a try first. While not as easy to use as Windows boxes, connecting to a remote file server is still trivial under OS X. Press Command-K in Finder, and then type in smb://server_name/share_name to connect. An authentication box will pop up to request workgroup, username and password settings. And then the drive will be mounted on the desktop. Performance wise is quite okay for Samba, and I felt Mac OS X has better TCP/IP stack than Windows as it takes less time to copy a large file over Samba on ethernet. However, Windows file sharing still has some problem in Mac OS X - at least in 10.2.6 that I am using right now.

First of all, mounting a large .dmg file over Samba does not work. Large here is about as small as 5Mb, which is not that large at all. This is annoying as I have to copy the .dmg to local first and then mount the image. If I try to mount the large .dmg file, Finder will then stall - I have to restart my Samba server in order to get the Finder back from La-La land. Secondly, the keychain for Samba does not seem to work, which results me to key in my password on every mount. It is a known problem, but there has no solution yet.

Someone from Whirpool suggested me to try out Netatalk instead, which is a AppleTalk over IP implementation. AppleTalk is much more native to Mac than SMB, and Netatalk is quite easy to install as well on my Mandrake. Configuring Netatalk is not rocket science either, and in a similar fashion as configuring Samba, I just need to specify the folders that I would like to share. A few minutes later I am now sharing the same set of folders as my Samba server, except over the AppleTalk protocol.

Mounting the AppleTalk shares is very similar to mounting the Samba shares. In the "Connect to Server" dialog box, you have to enter afp://server_name/share_name to mount the remote share onto the desktop. Keychain access actually works for AppleTalk shares, so it can automatically fill out the password for me. And then it will be like a regular folder that you can access. Netatalk stores more resource than Samba, and it includes the folder arrangement settings, open-with settings for files, etc. Therefore the mounted folder feels more like a Mac folder. However, it can also become annoying in some cases.

Because Netatalk needs to store these extra information, it creates quite a few extra files and folders in every folder it visited. These are not visible under Netatalk, but however if you mount the same folder again using Samba, you will be able to see all these hidden files lying around. Especially the .DS_Store file that Netatalk translated into :2eDS_Store, and it sticks out like a sore thumb in file listing in Windows...

So which one is better? Currently I prefer Netatalk because it provides better Mac support, but I wish it can just keep every files it needs to create into one single hidden directory, instead of multiple ones that scatter everywhere. I heard Samba support still has a lot of problem in Mac OS X, but so far I have not experienced kernel panic yet.

Just another annoying observation. When you put the machine to sleep when some shares are mounted (Samba or AppleTalk), and when it wakes up, all the shares will be unmounted with error messages saying the server has given up. Isn't it easier to have mounted volumes automatically re-mount if the network connection has dropped? At least Windows does that - the shares will be re-mounted when it is needed. But on Mac I need to re-mount them manually every-time after waking up.

Alright alright. One more rant. Under Windows you can use \server_nameshare_name directly inside a command prompt, inside Windows Explorer, or virtually anywhere to automatically mount and use the remote share. Is there a way to do it under Mac OS X? I saw there are automounter in Mac OS X, and I wonder whether it can be achieved that whenever a directory is requested, AppleTalk share or Samba share will be mounted automatically. Gotta go and find out.