I came across this problem when i had the need to transfer a Wordpress site from a server to an other. So all the folder (included hidden file) needed to be recurively transferred.
Ftp command is too limited and does not support recursive upload, so the solution is to use ncftpput command.
How to use it
ncftpput -R -v -u "email@example.com" ftp.mydomain.blog /public_html/ /home/yuri/Downloads/site/
/public_html/remote folder where files will be uploaded
/home/yuri/Downloads/site/local folder (source)