C'è la possibilità di scrivere una procedura che copia una directory tramite un metodo ricorsivo... Questo codice è tratto da una delle mie applicazioni:
codice:
    Public Function GetDirName(ByVal Dir As String) As String
        Return Dir.Remove(0, Dir.LastIndexOf("\") + 1)
    End Function
    Public Sub CopyDirectory(ByVal Dir As String, ByVal Destination As String)
        Dim Dirs() As String = Directory.GetDirectories(Dir)
        Dim Files() As String = Directory.GetFiles(Dir)
        Dim S As String
        ' Dim Size As Double = GetDirSize(Dir)
        ' Dim Index As Double

        ' lblStatus.Text = "Copia dei file in corso..."

        Try
            MkDir(Destination)
        Catch IOE As IOException
            MsgBox("Errore di accesso alla cartella: assicurarsi che non esista una cartella con lo stesso nome e di non " + _
            "stare modificando la suddetta mentre vengono eseguite le azioni di copia, quindi riprovare.", MsgBoxStyle.Exclamation)
        End Try
        For Each S In Files
            Application.DoEvents()
            FileCopy(S, Destination + "\" + Path.GetFileName(S))
            ' Index += FileLen(S)
            ' lblAll.Text = "Copia dei file: " & CInt(Index * 100 / Size) & "%"
            ' prgAll.Value = CInt(Index * 100 / Size)
        Next
        For Each S In Dirs
            CopyDirectory(S, Destination + "\" + GetDirName(S))
        Next
    End Sub