The worst could happen, but use grunt. Always.
A little lesson from wasted time.
Code could be wrong, thus it has to be tested, and tested, and tested. Automate that test. Do not wait to waste any more time.
A note on grunt is that shell can do the most, for example lftp is very good:
grunt.initConfig({ shell: { upload: { command: 'lftp -e \'put ./myfile.tar.bz2\' ftp.mytargetsite.com' } } });
Is better than use grunt-ftp, or grunt-ftp-deploy, or whatever.
Note on lftp: what is that certificate problem?? I just added
set ssl:verify-certificate/ftp.mytargetsite.com no
in ~/.lftp/rc
I can not understand why it ask for ssl certificate, I just do not care