2

на удаленной машине я хочу запустить команду, которая медленно создает большой поток (сжатие потока) и одновременно начать загрузку этого потока. я не хочу сначала сохранять поток в файле на удаленном компьютере, так как для создания целого контента требуется время, а позже - для его загрузки. я хочу сжать и скачать параллельно, чтобы сэкономить время. я могу SSH / SCP на удаленной машине

я увидел: как мне вывести (огромный) вывод команды непосредственно на удаленную машину?

но я хочу тянуть, а не толкать

2 ответа2

6

Вы можете сделать это аналогичным образом:

ssh -T user@example.com 'producing_command' > big.txt

Просто запустите производящую команду на сервере и запишите в локальный файл.

1

Хотя я согласен с ответом о выводе по трубопроводу через STDOUT и через SSH, я хотел бы предложить вариант перспективы:

Вы можете использовать SSHfs (файловую систему FUSE) на удаленном компьютере, чтобы смонтировать каталог с вашего локального компьютера и затем выполнить запись в него. При необходимости это может быть туннелировано обратно через соединение с вашего локального компьютера на удаленный компьютер.

Пример А:

LOCAL$  ssh user@remotemachine.tld
REMOTE$ sshfs user@localmachine.tld:/directory/on/localmachine /directory/on/remotemachine
REMOTE$ bigstreamcommand >/directory/on/remotemachine/bigstreamfile

В результате выходные данные будут медленно записываться в /directory /on /localmachine /bigstreamfile

Если вы не можете получить доступ к локальной машине с удаленной машины по прямому SSH (NAT без перенаправления портов, CGNAT, брандмауэры, ...), выполните следующие действия.
Пример Б:

LOCAL$  ssh user@remotemachine.tld -R54223:localhost:22
REMOTE$ sshfs -p54223 user@localhost:/directory/on/localmachine /directory/on/remotemachine
REMOTE$ bigstreamcommand >/directory/on/remotemachine/bigstreamfile

Единственное требование для примера B для работы заключается в том, что вы используете SSH-сервер на локальном компьютере. Вы подключаете sshfs к localhost:54223, так как это обратный туннель от удаленной машины, перенаправляющий все соединения обратно через исходное соединение SSH и к серверу SSH на вашей локальной машине.

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

Для получения более подробной информации, пожалуйста, перечитайте, а затем обратитесь к man sshfs .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .