andrew.hedges.name / blog

Merge folders with Transmit

16 January 2007 · Estimated reading time: 3 minutes

Maybe I missed it, but I don’t see a good solution on the Mac for merging folders full of files. Well, today I really needed to do just that, so I figured out a way using only Panic’s excellent ftp program Transmit.

Today, my hard drive filled up. I guess it was the combination of the new camera I got for Christmas, the two-disc best of Pink Floyd set I ripped recently, and the 1.2GB video podcast I downloaded of the recent iPhone unveiling that did it. Whatever the cause, I needed to archive some bytes and didn’t want to spend all day doing it.

Sharing preference pane
Step 1 Turn on “FTP Access” (if it’s not already) in the Sharing preference pane of the System Preferences.
Transmit interface
Step 2 Use Transmit to connect to your Mac as if it were a remote server.
Transmit’s merge files dialog
Step 3 Start your download. When presented with the option, choose to “Merge” the folders.

My first stop on the merging folders express was FileMerge, a utility included with Apple’s Xcode. It looked like it might do the trick (and was even recommended by a prominent Mac mag), but apparently it compares not only the contents of two folders, but the contents of the files in two folders. (Which makes sense, considering it is used by programmers to find differences between source files.)

Not surprisingly, my PowerBook’s meager 1GHz G4 processor was quickly overwhelmed trying to compare a couple thousand big, binary MP3 and AAC files.

After force quitting FileMerge, I thought to myself, “Self, all I need is something like Transmit’s merge folders feature.” Then it struck me. Why not use my Mac’s built-in ftp server to fool Transmit into thinking it’s connected to a remote server? Then, I can use the merge folders feature!

Sure enough, it worked like a charm with sustained copies of over 4500 KB/s from my built-in hard drive to the USB 2.0 external drive to which I was backing up. To the left is the step-by-step for those who wish to duplicate this awesome feat of folder mergerality.

The only issue I ran into is that Transmit seems to need to confirm whether to skip or replace files on a folder-by-folder basis. Even so, this technique is about a gazillion times faster than tyring to merge two big folders by hand.