I liked my workflow with ncftp, uploading all files with a one-liner. Sadly ncftp can’t (or I couldn’t figure out how to) skip existing files and upload only new and/or modified files. lftp on the other hand has the option to only upload new/modified files with the --only-newer
flag.
With lftp I can upload all the necessary files by running lftp sftp://server --user username --password password -e "set ftp:ss-allow no; mirror -R local-path remote-path --only-newer; quit"