I am looking for an FTP program (free if possible) that can find diffs between the client and server so it does not have to upload 50 gb every time I commit files.

I cannot use svn since this machine is not on my network.

  • If you have root access to the machine, you can simply perform an svn update. As you're looking for a FTP solution, I suppose this isn't the case. – Paul Lammertsma Nov 10 '09 at 11:25
  • To extend on @Paul a bit: the phrase "every time i commit files" makes us think you might actually need some tools to deploy a specific revision (or just the latest...) on the production machine, rather than copying some local version to that machine? (I'd say something like svn export instead of svn update, and no root access needed.) – Arjan Nov 10 '09 at 11:46
  • @Eran, after signing in to Super User, be sure to associate your accounts at stackoverflow.com/users/205477?tab=accounts -- and don't forget to read the FAQs. Thanks! – Arjan Nov 10 '09 at 13:34
  • (You could use svn if you can connect through SSH, by setting up some tunnel.) – Arjan Nov 10 '09 at 13:49

How about using rsync?

  • I use gadmin-rsync on Ubuntu. – djangofan Dec 15 '11 at 2:22
  • the server does not support it! – styks Dec 18 '14 at 15:34

If you want a desktop application, FileZilla is a good choice, but if you want something you can target programmatically, rsync is probably better. In what context are you going to use this?


FileZilla will do the job


sitecopy might be suitable. rsync is designed for this purpose as well.


Beyond Compare can also be useful for your task -- and it can so much more.


"Synchronizing files over FTP" here at Super User mentions wput and ncftp/ncftpput.


I wrote a utility app that did this: compute SHA256 hash of each file to be uploaded. Produce a text file with those hashes and the filenames - an index file. Download the server-based index file. If it is not present, then assume all files need to be refreshed. If it is present, then, for each file to be uploaded:

  • check the hash in the downloaded text file
  • if the hash is not present then upload
  • if the hash is present and does not match the hash of the current (local) file, then upload
  • if the hash is present and matches, skip the file.

After all file uploads complete, upload the new index file.

Rather than uploading 500 files each time, it now uploads only the changed files, plus the index file.

  • ...but how would using such index file find changes made to remote files (or even deletions) by some other process or user? – Arjan Nov 10 '09 at 14:40
  • obviously it does not. If someone else changes the file, without updating the index file, then the system is going to fail. – Cheeso Nov 10 '09 at 14:53
  • Let's hope you're not maintaining some power plant then. ;-) – Arjan Nov 10 '09 at 15:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.