如何使用 plink 傳輸 tar 檔案?

如何使用 plink 傳輸 tar 檔案?

我想使用 PowerShell 將 .tar 存檔從 Windows 計算機串流傳輸到 Linux 計算機,並從流中提取存檔。 PowerShell 將存檔內容推送到 stdout,並將 plink.exe 流內容推送到接收命令列的 stdin。

我想出了以下命令。

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

但是,tar 指令只能辨識部分文件內容。我缺少什麼或有更好的解決方案嗎?

錯誤訊息:

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

答案1

顯然,這是一個編碼問題。預設情況下,Get-Content 以編碼字串形式傳回檔案內容,但 tar 需要二進位流。解決方案是將二進位資料編碼為 Base64 等文字格式並對其進行解碼。我看到下面的一句台詞,速度太慢了。

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

我想我會上傳文件並分別提取它們。

相關內容