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?