Обратите внимание, что я не могу сначала хранить файл локально - это является слишком большим.
Эта (неприятная) страница (прокрутка полностью к нижней части), кажется, дает ответ, но я испытываю затруднения при распутывании части, это характерно для ленточных накопителей:
Для создания этого более конкретным вот то, как Вы думали бы, что это могло бы работать:
На локальной машине:
% echo "pretend this string is a huge amt of data" | scp - remote.com:big.txt
(Это использует конвенцию - который scp на самом деле не поддерживает - заменения тире для исходного файла, чтобы сказать ей получать ее от stdin вместо этого.)
можно подключиться к ssh и выполнить удаленную команду. В этом случае, удаленной командой будет cat > big.txt
, который скопирует stdin в файл big.txt
.
echo "Lots of data" | ssh user@example.com 'cat > big.txt'
Это легко и просто, при условии, что Вы можете использовать ssh для соединения с удаленным концом.
Вы также можете использовать nc
(NetCat) для передачи данных. На принимающем устройстве (например, host.example.com):
nc -l 1234 > big.txt
Это настроит nc
на прослушивание порта 1234 и копирование всего, что отправляется на этот порт, в файл big.txt
. Затем, на посылающей машине:
echo "Lots of data" | nc host.example.com 1234
Эта команда скажет nc
на посылающей стороне подключиться к порту 1234 на приемнике и скопировать данные из stdin по сети.
Однако, решение nc
имеет несколько недостатков:
ssh
.ssh
вы можете инициировать передачу только с одной из конечных точек.С помощью ssh:
echo "pretend this is a huge amt of data" | ssh user@remote.com 'cat > big.txt'