Рейтинг:0

Как передать tar-архив с помощью plink?

флаг in

Я хочу передать архив .tar с компьютера с Windows с помощью PowerShell на компьютер с Linux и извлечь архив из потока. PowerShell отправляет содержимое архива на стандартный вывод, а содержимое потока plink.exe — на стандартный ввод командной строки.

Я придумал следующую команду.

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

Однако команда tar распознает содержимое файла лишь частично. Что мне не хватает или есть лучшее решение проблемы?

Сообщение об ошибке:

tar: переход к следующему заголовку
tar: выход со статусом сбоя из-за предыдущих ошибок

флаг in
Пожалуйста, опубликуйте свое решение в качестве ответа, а не редактируйте его в своем вопросе.
Рейтинг:0
флаг in

Судя по всему, это проблема с кодировкой. По умолчанию Get-Content возвращает содержимое файла в виде закодированной строки, но tar ожидает двоичный поток. Решением будет кодирование двоичных данных в текстовый формат, такой как Base64, и их декодирование. Я подхожу к следующей строчке из-за ее ужасной медленности.

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

Я думаю, что я буду загружать файлы и извлекать их отдельно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.