Я только что выпустил 2 новые библиотеки для таких вещей в FTP / SFTP
Рекурсивное копирование файлов и папок на удаленном SFTP-сервере (если local_path заканчиваетсяс косой чертой, загружать содержимое папки, иначе загружать саму папку)
Ftp::upload_dir($server, $user, $password, $local_path, $remote_path, $port = 22);
Загрузить каталог с удаленного FTP-сервера (если remote_dir заканчивается косой чертой, загрузить содержимое папки, иначе загрузить саму папку)
Ftp::download_dir($server, $user, $password, $remote_dir, $local_dir,
$ port = 22);