0

I am looking (over some time now and with some despair) for a tool, I guess most web developers need:

A fast, ‘lazy’ aka ‘differential’ FTP upload tool. To quickly upload (without much server-side checking) those very few changed files from my develeper PC (client) to my webserver. Under Windows. Preferably scriptable, so prefereable a command line executable (or jar).

Should IMHO be a common need, still I haven't found anything convincing:

  • 99% of the time (beyond initial download) I only want to push very few changed files (but that as quickly as possible)

  • Yes, I am aware: FAT filesystems have time precision issues, client vs. server might have timezone issues on top... iterating the server side checking on timestamps (insufficent), timestamps, checksums (costly), certainly all takes time. => I would be sufficient and most efficient, to track changes purely on the client side (read: maintain a list of checksums of the directory tree). Since I am uploading from precisely one client to precisely one server. Thus, shouldn't a 'blindfolded' lazy aka differential mode be the best solution, also to shaves off some more seconds? (2 secs vs. 15 secs means the world to me).

  • I'd prefer SFTP to have a slightly higher level of security. However, my (cheap) web hoster only allows password authentication (like normal FTP), not private key authentification (so besides making it more complicated, Putty etc. is not an option, if I understand correctly...)

  • I would rather avoid having to deal with a separate SSL tool, Putty, CygWin... a single .exe (or .jar) to be called with the required parameters would be niiiiice, so one can make up his upload_clientA.bat and stop thinking about it...

  • exclusions are needed. A few folders/files excluded from upload (i.e psd's), but also a few files on the server (config files not to be overwritten by my dev configuration) must be immune to client changes. That's basicall all I need.

Loosely speaking this boils down to:

foo.exe upload 
    -s:d:\depot\webroot 
    -t:ftp.mywebhost.com:1234/www/
    -mode:sftp -u:me -P:youwish 
    -lazyMode
    -exclude /wp-config.php /cache/* /someElse

Looking at...

  • For now, I am using a rather old programm fsync that gets pretty close, but it lacks SFTP. And still takes 5-15 seconds before actual FTP uploading gets going...
  • Yes, I heard about the good old linux/unix tool rsync, but I am unsure if all of this can be met. And sounds like I need to establish the SSL layer beforehand, get into Cygwin...
  • SyncBack might do the job, except getting SFPT means buying Pro. And no fast 'blindfolded mode' as far as I can see. And I an unsure how to except selected (configuration) files on the target side...
    • being allowed to install git on the server could be a winner... but... not a chance...

Anybody knows about a simple, fast command line tool like that?

1
  • FileZilla client has some command-line support. You could try that. However, this question is classed as shopping and will likely be closed shortly.
    – tombull89
    Jan 21, 2014 at 9:38

3 Answers 3

1

Cygwin would allow you to run an ssh server, in turn you would get SFTP.

0

I think you want sitecopy. It has all of the features you mentioned, and works over FTP or SFTP.

sitecopy is a Unix app though, so I don't know if it will meet your requirement to "not have to deal with Cygwin". For Windows clients, you could build it in Cygwin and distribute it in a bundle with any required DLLs.

0

You can operate rsync over ssh quite easily. rsync gets you the differential and lazy copying and ssh can be used for your secure transport - I'm quite confident there are working cygnus versions of both. rsync+ssh is a very widely used combination, but I get the impression unison http://www.cis.upenn.edu/~bcpierce/unison/ might just suit your situation a bit better.

Good Luck!

2

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