¿Cómo transmitir un archivo tar usando plink?

¿Cómo transmitir un archivo tar usando plink?

Me gustaría transmitir un archivo .tar desde una máquina con Windows usando PowerShell a una máquina con Linux y extraer el archivo de la transmisión. PowerShell envía el contenido del archivo a la salida estándar y plink.exe transmite el contenido a la entrada estándar de la línea de comandos.

Se me ocurrió el siguiente comando.

Get-Content file.tar | & plink.exe -C -agent "remote_host" "tar xf -"

Sin embargo, el comando tar reconoce el contenido del archivo sólo parcialmente. ¿Qué me falta o hay una mejor solución para el problema?

Mensaje de error:

tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Respuesta1

Aparentemente, se trata de un problema de codificación. De forma predeterminada, Get-Content devuelve el contenido del archivo como una cadena codificada, pero tar espera una secuencia binaria. La solución sería codificar los datos binarios en un formato de texto como Base64 y decodificarlos. Llego al siguiente chisme por su terrible lentitud.

[System.Convert]::ToBase64String((Get-Content -AsByteStream file.tar)) | plink.exe -C -agent "remote_host" "base64 -di | tar xvf -"

Creo que subiré archivos y los extraeré por separado.

información relacionada