Como transmitir o arquivo tar usando o plink?

Como transmitir o arquivo tar usando o plink?

Gostaria de transmitir um arquivo .tar de uma máquina Windows usando PowerShell para uma máquina Linux e extrair o arquivo do fluxo. O PowerShell envia o conteúdo do arquivo para stdout e o conteúdo do stream plink.exe para receber o stdin da linha de comando.

Eu criei o seguinte comando.

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

No entanto, o comando tar reconhece o conteúdo do arquivo apenas parcialmente. O que estou perdendo ou existe uma solução melhor para o problema?

Mensagem de erro:

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

Responder1

Aparentemente, este é um problema de codificação. Por padrão, Get-Content retorna o conteúdo do arquivo como uma string codificada, mas tar espera um fluxo binário. A solução seria codificar os dados binários para um formato de texto como Base64 e decodificá-los. Chego à seguinte frase por sua terrível lentidão.

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

Acho que vou fazer upload de arquivos e extraí-los separadamente.

informação relacionada