(2) рекурсивная процедура с циклом.
фактически - самая длительная операция это обращение на фтп, а ее все равно надо прогнать для всех файлов.
а цикл в цикле в цикле это уже не так страшно и долго, как время загрузки файлов по фтп.
(6) протокол ftp так устроен технологически, что два файла за раз передать по нему не возможно.
По этому у тебя два варианта - либо-либо:
1. каждый файл по отдельности перегонять, создавая недостающие папки
2. скрючить файлы в один архив, перегнать архив по фтп одним файлом, раскрючить архив внутри ftp-сервера