However, I recently discovered one area where the Mac let me down (initially).
Because of (or in spite of) my constant chatter about the Mac my sister-in-law recently bought a 20″ iMac for her family. With Apple’s recent prices drops and the fact that her Windows PC was suffering from daily failures, she was ready to take my advice. Of course, I offered to help set it up. Her husband and I worked tireless for all of fifteen minutes. We setup Mail.app to read his Gmail, synced AddressBook with his Google Contacts and integrated iCal with Google Calendar.
After setting things up we decided that our first priority was moving their Picasa photo collection (about 20GB) and iTunes music library (about 6000 songs) from the old Windows PC to iPhoto and iTunes on the Mac. Since this was my first time migrating files I went straight to the Apple web site and read their excellent Switch 101 FAQ. First we tried networking the two computers. Setting up file sharing on the Mac was a breeze; not so on the PC. We had to turn on some services and dig through some deeply buried menu items before we had a successful connection. However, once we started moving files over the network we realized that the PC was too slow and the transfer would most likely take all month.
I went home disappointed but a few days later, I had a brilliant idea ( a truly brilliant person would have thought of this sooner ) to use an external hard drive. I took a trip to a local electronics store and purchased a 250GB Seagate Free Agent Go external USB hard drive (HD) for about $60. I was able to copy the files from the Windows PC to the external hard drive and then copy the files back to the iMac. The side effect of this was that my sister-in-law also has a backup of her important files if anything should go wrong. After successfully moving her files to the Mac we decided to copy some of the files she had stored on the Mac over the last few days back to the external HD. It was then that I discovered a problem.
You see the external hard drive was formatted for the NTFS file system.
NTFS is the standard file system of Windows NT, including its later versions Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008, Windows Vista, and Windows 7. Mac OS X v10.3 and later includes read-only support for NTFS-formatted partitions.
I couldn’t save any files from the Mac to the drive. I thought about reformatting the drive for HFS+ (the OS X file system) but then I would have to copy over all the files again.
Of course, this was only a minor inconvenience because Google is my friend and I love spending time with my friends. The solution? NTFS-3G, a piece of Open Source software originally developed for Linux.
NTFS-3G is a freely and commercially available and supported read/write NTFS driver for Linux, FreeBSD, Mac OS X, NetBSD, Solaris, Haiku, and other operating systems. It provides safe and fast handling of the Windows XP, Windows Server 2003, Windows 2000, Windows Vista, Windows Server 2008 and Windows 7 file systems.
The UNIX underpinnings of OS-X make it easy to port Open Source software to the Mac. NTFS-3G relies on another piece of Open Source software called MacFUSE that was developed by Google programmer, Amit Singh. MacFUSE is an implementation of the Open Source FUSE software that allows you to “extend Mac OS X’s native file handling capabilities via 3rd-party file systems”. In other words, it’s a development kit that allows the Mac to use almost anything as a file system. Together with the NTFS-3G driver I was able to mount and write my sister-in-laws files to the external hard drive.
MacFUSE must be installed and the Mac rebooted, before you can install NTFS-3G. Once NTFS-3G is installed ( and the Mac rebooted ), you can use System Preferences to change the options for NTFS-3G. Some options apply to all drives but the you can also set volume specific options. I found that the defaults work just fine for my needs but you might want to disable file caching if data integrity is an issue for you. In my next blog posting I’ll describe some how MacFUSE can help with web development.