Si utiliza redes locales (y globales), es posible que sepa que los archivos entre sistemas se transfieren mediante protocolos SMB, FTP o HTTP. El problema con todos estos protocolos son las dificultades con la descarga de archivos grandes. Además, este tipo de problema es un problema común debido a una conexión lenta o inestable. Cuando copia archivos a través de estos protocolos, generalmente toma todo el ancho de banda disponible entre el servidor y los usuarios. Puede causar un rendimiento deficiente de la red o de las aplicaciones (a veces no podemos configurar las políticas de QoS adecuadas).

En este artículo, le mostraremos una forma alternativa de copiar archivos grandes con el protocolo BITS usando PowerShell.

Uso de BITS

BITS o Servicio de transferencia inteligente en segundo plano es un servicio de Windows para transferir archivos entre los sistemas. Con el protocolo BITS, puede transferir archivos entre computadoras (descargar y cargar archivos).

Beneficios de usar BITS:

  • BITS es un protocolo inteligente que puede regular el uso del ancho de banda. BITS puede cambiar dinámicamente la velocidad de transferencia de datos
  • La transferencia de archivos se ejecuta en segundo plano, por lo que es invisible para el usuario
  • BITS puede reanudar la transferencia de archivos automáticamente incluso después de interrupciones de la red
  • BITS no requiere un servidor IIS a gran escala en el lado del cliente (o servidor)

Entonces, BITS es el mejor protocolo para transferir archivos grandes a través de redes lentas.

Cómo descargar el protocolo BITS usando PowerShell

Supongamos que necesitamos descargar el archivo, que se almacena en el servidor HTTP (http://10.2.2.148/erd65_32.iso).

Primero, tenemos que agregar soporte para el módulo BITS a PowerShell:

Transferencia de bits del módulo de importación

Después de eso, podemos ver la lista de todos los comandos disponibles:

obtener comando *-BITS*

bits de powershell

Como podemos ver, hay ocho scripts disponibles.

Transferencia de datos síncrona a través de BITS

Para descargar el archivo con el protocolo BITS, use el comando:

Start-BitsTransfer –fuente http://10.2.2.148/erd65_32.iso -destino c:temp

transferencia de bits de powershell

Mensaje Esta es una transferencia de archivos que utiliza el servicio de transferencia inteligente en segundo plano (BITS) dice que el archivo se está descargando ahora mismo con el protocolo BITS.

En este caso, el script comienza a descargarse en modo síncrono. Puede ver la barra de progreso, que le mostrará un estado de transferencia.

Nota. Si desea reiniciar su computadora, debe saber que el proceso de descarga no se renovará.

Transferencia de datos asíncrona a través de BITS

Puede ejecutar el proceso en el modo asíncrono. Para hacer esto, debe agregar el -asincrónico parámetro en el siguiente comando. En este modo, si sucede algo (reiniciar el servidor, el cliente), el proceso de descarga continuará automáticamente después.

Start-BitsTransfer -source http://10.2.2.148/erd65_32.iso -destination c:temp –asynchronous

fuente de powershell

Pero en este modo no podemos ver el estado de la transferencia, por lo que debemos usar el Obtener transferencia de bits Comando para comprobar el estado.

Obtener transferencia de bits | Florida

powershell obtener transferencia BITS

Además, puede verificar el estado en forma tabular:

Obtener transferencia de bits | seleccione DisplayName, BytesTotal, BytesTransferred, JobState | Formato-Tabla –AutoSize

Cuando está utilizando el modo asincrónico, crea un archivo temporal (.tmp). Para convertir este archivo al archivo original, use el comando:

Obtener transferencia de bits | Transferencia de bits completa

transferencia completa de BITS

Después de eso, se realizará el proceso de descarga y lo verá en la lista.

Si el servidor requiere autenticación de usuario, use el siguiente comando para abrir una ventana de autenticación:

Start-BitsTransfer -source http://10.2.2.148/erd65_32.iso -destination c:temp -asynchronous -Priority low -Authentication NTLM -Credential Get-Credential

solicitud de credencial de powershell

Para facilitar el proceso de seguimiento de resultados, puede usar un script simple que monitorea el estado y muestra el porcentaje de transferencia en la pantalla.

Después de la transferencia, el script convertirá el archivo a su formato original:

Transferencia de bits del módulo de importación
$trabajo = Start-BitsTransfer -Origen http://10.2.2.148/erd65_32.iso -Destino c:temp -Asíncrono
while( ($trabajo.JobState.ToString() -eq 'Transferencia') -o ($trabajo.JobState.ToString() -eq 'Conectando') )
{
Host de escritura $Job.JobState.ToString()
$Pro = ($trabajo.BytesTransferidos / $trabajo.BytesTotal) * 100
Host de escritura $ Pro "%"
Dormir 3
}
Complete-BitsTransfer -BitsJob $trabajo

Copiando el contenido del directorio a través de BITS

Como dijimos anteriormente, el protocolo BITS no requiere una escala completa servidor IIS. Eso significa que podemos copiar archivos directamente desde otras máquinas Windows o carpetas compartidas:

Start-BitsTransfer -Origen msk-rep01osrhel-server-7.0-x86_64-dvd.iso -Destino c:temp –Asíncrono

BITS no puede copiar archivos y carpetas de forma recursiva desde un directorio específico. Para copiar todos los archivos con subcarpetas del directorio de red específico, debe usar este script:

Transferencia de bits del módulo de importación
$Fuente=”msk-rep01os”
$Destino=”c:tmp”
$carpetas = Get-ChildItem -Name -Path $source -Directory -Recurse
$trabajo = Inicio-BitsTransfer -Origen $Origen*.* -Destino $Destino -asincrónico -Prioridad baja
while( ($trabajo.JobState.ToString() -eq 'Transferencia') -o ($trabajo.JobState.ToString() -eq 'Conectando') )
{
Dormir 3
}
Complete-BitsTransfer -BitsJob $trabajo
foreach ($i en $carpetas)
{
$existe = ruta de prueba $destino$i
if ($exists -eq $false) {New-Item $Destination$i -ItemType Directory}
$trabajo = Start-BitsTransfer -Origen $Origen$i*.* -Destino $Destino$i -asincrónico -Prioridad baja
while( ($trabajo.JobState.ToString() -eq 'Transferencia') -o ($trabajo.JobState.ToString() -eq 'Conectando') )
{
Dormir 3
}
Complete-BitsTransfer -BitsJob $trabajo
}

trabajo de BITS de PowerShell

Eso es todo, chicos. BITS es una excelente alternativa a la transferencia tradicional a través de protocolos conocidos. BITS es la solución óptima para transferir archivos grandes (como archivos ISO), así que pruébelo.

Recomendado para ti