The fastest way to download or upload directory tree over FTP using just plain console is to execute lftp command.
lftp is a sophisticated file transfer program which supports protocols like ftp/s, http/s, hftp, fish, sftp and torrent. It is a good idea to install this tool as it can be very handy at times.
To upload local directory local_dir to remote remote_dir on hostname execute:
$ lftp -u username,password -e "mirror -R local_dir /remote_dir;quit" ftp://hostname
Total: 1 directory, 3 files, 0 symlinks
New: 3 files, 0 symlinks
20071573 bytes transferred in 162 seconds (121.8K/s)
To see contents of remote directory remote_dir on hostname execute:
$ lftp -u username,password -e "ls /remote_dir;quit" ftp://hostname
total 19612
-rw-r--r-- 1 nobody nogroup 15568717 Feb 25 23:29 eGroupware.zip
-rw-r--r-- 1 nobody nogroup 113942 Feb 25 23:29 eGroupware-egw-pear.zip
-rw-r--r-- 1 nobody nogroup 4388914 Feb 25 23:30 wordpress.zip
To download remote directory remote_dir on hostname to local local_dir execute:
$ lftp -u username,password -e "mirror /remote_dir local_dir;quit" ftp://hostname
Total: 1 directory, 3 files, 0 symlinks
New: 3 files, 0 symlinks
20071573 bytes transferred in 20 seconds (981.0K/s)
Don’t forget to read manual as there are couple of useful options (like downloading or uploading files in parallel).