Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm developing locally on a mac running MAMP and BBEdit. I'm currently using Transmit to synch files by (S)FTP. I like the software and it has a "synch" feature to compare local files to remote either by file size or modification date, but I've found this feature to be unreliable in either setting. My hunch is that it is the result of:

  1. OSX Mt. Lion listing file size as KB and the linux server using KiB (more on that here)
  2. I'm using git for version control and I think the modification dates go out of synch when I switch between branches.

The bottom line is that Transmit seems like a perfect tool for smaller projects with fewer developers, but for the project I'm currently working on (with multiple working branches, frequent commits, and the need for precise, systematic synchronization of files) it doesn't seem up to the job.

I've also used trusty Filezilla, which does not seem to have the same reliability issues, but also has no real "synch" feature. It will show differences but you need to browse through the directories manually and find them all (like an Easter egg hunt). This isn't practical for me because changes often involve many files in different directories.

My question: What is the right way to do this??

I saw here that BBEdit has an FTP browser and diff-like command line tool, but I have not found any documentation on how to use it with remote files.

share|improve this question
What about the tool "rsync"? – ernestopheles Jan 5 '13 at 22:24
I looked it up and it appears to be a command line tool. To help me understand, could you briefly describe how the workflow would work in the context I described above? Maybe as an answer. – emersonthis Jan 5 '13 at 23:02
up vote 1 down vote accepted

What you're looking for is "rsync", from my point of view. The best way to start is the man-page:

Technically, there is no fixed work-flow of how to use the tool. There are a number of patterns beyond most peoples imagination. As an example, you can make it behave like OSX's time machine: You basically have to specify your work-flow and find the appropriate set of options / switches to make rsync do, what you prefer.

In fact, you can find a variety of graphical front ends, if you do not like to use the command line. A good example is this:

share|improve this answer
I'm going to mark your answer as the solution because it appears to be the correct tool for what I want to do... however I should note that I can't use it yet because I get the following error when I use grsync: rsync -s unknown option. I did a quick google and it seemed like a can of worms so I'll have to dig into it later when I have time for a project. – emersonthis Jan 5 '13 at 23:59
It is the tricky bit about rsync - it needs a bit of learning, because it is very much its own complex world. But it is worth it. For the "-s" switch, consult the man page and find out, what it does. – ernestopheles Jan 6 '13 at 0:59

Use rsync. If you find the documentation impenetrable, try the GUI wrapper grsync. rsync is specifically made for synchronizing. It has many options which will almost certainly cover your needs and as far as I can tell pretty much all of them are accessible through grsync. It's also a fairly nice tool for making any kind of remote file copy involving a directory tree, whether you're synchronizing or not - faster than scp or even ftp, on par with tar|ssh but less complicated.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .