Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question

migrated from stackoverflow.com Nov 10 '09 at 11:32

This question came from our site for professional and enthusiast programmers.

    
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

7 Answers 7

How about using rsync?

share|improve this answer
    
I use gadmin-rsync on Ubuntu. –  djangofan Dec 15 '11 at 2:22

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?

share|improve this answer

FileZilla will do the job

share|improve this answer

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

share|improve this answer

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

share|improve this answer

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

share|improve this answer

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.

share|improve this answer
    
...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

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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