Copiar un archivo y mostrar el progreso

Problema: Necesito copiar un archivo de un lugar a otro y además, muestre el progreso del mismo.
Solución: Un proceso con una barra de progreso (ProgressBar)

El proceso no es del todo mío, lo encontré por allí y lo adapté a mis necesidades, como siempre.

Sub CopiaArchivoConProgreso(ByVal path As String, ByVal path2 As String, ByVal file As String)
        'path = ruta del lugar de origen, en donde se encuentra el archivo
        'path2 = ruta del lugar de destino, a donde se copiará el archivo
        'file = nombre del archivo a copiar
        Dim fi As New IO.FileInfo(file)
        Dim sr As New IO.FileStream(path & file, IO.FileMode.Open) 'lugar de origen
        Dim sw As New IO.FileStream(path2 & file, IO.FileMode.Create) 'lugar de destino
        Dim len As Long = sr.Length - 1
        For i As Long = 0 To len
            sw.WriteByte(sr.ReadByte)
            If i Mod 1000 = 0 Then 'Actualiza con cada 1 kb copiado
                ProgressBar1.Value = i * 100 / len
                Application.DoEvents()
            End If
        Next
        ProgressBar1.Value = 0
        sr.Close()
        sw.Close()
End Sub

Recordar importar

Imports System.IO

Para usarlo, sería más o menos así:

Dim ruta_servidor As String = "D:\Carpeta\"
Dim ruta_local As String = "C:\Respaldo\"
Dim archivo As String = "Ejemplo.zip"

CopiaArchivoConProgreso(ruta_servidor, ruta_local, archivo)