Ultimate FTP can help you.
The following code snippet demonstrates that:
using ComponentPro.IO;
using ComponentPro.Net;
...
// Create a new instance.
Ftp client = new Ftp();
// Connect to the FTP server.
client.Connect("myserver");
// Authenticate.
client.Authenticate("userName", "password");
// ...
// Get all directories, subdirectories, and files from remote folder '/myfolder' to 'c:\myfolder'.
client.DownloadFiles("/myfolder", "c:\\myfolder");
// Get all directories, subdirectories, and files that match the specified search pattern from remote folder '/myfolder2' to 'c:\myfolder2'.
client.DownloadFiles("/myfolder2", "c:\\myfolder2", "*.pgp");
// or you can simply put wildcard masks in the source path, our component will automatically parse it.
// download all *.pgp files from remote folder '/myfolder2' to local folder 'c:\myfolder2'.
client.DownloadFiles("/myfolder2/*.pgp", "c:\\myfolder2");
// Download *.pgp files from remote folder '/myfolder2' to local folder 'c:\myfolder2'.
client.DownloadFiles("/myfolder2/*.pgp", "c:\\myfolder2");
// Get files in the folder '/myfolder2' only.
TransferOptions opt = new TransferOptions(true, RecursionMode.None, false, (SearchCondition)null, FileExistsResolveAction.Overwrite, SymlinksResolveAction.Skip);
client.DownloadFiles("/myfolder2", "c:\\myfolder2", opt);
// ...
// Disconnect.
client.Disconnect();
http://www.componentpro.com/doc/ftp has more examples.