web-dev-qa-db-ja.com

sshを使用してストリームをダウンロードする方法は?

リモートマシンで、大きなストリームをゆっくりと生成するコマンド(ストリーム圧縮)を起動し、同時にそのストリームのダウンロードを開始したいと思います。コンテンツ全体を作成するのに時間がかかり、後でダウンロードするのに時間がかかるため、最初にストリームをリモートのファイルに保存したくありません。時間を節約するために、圧縮とダウンロードを並行して実行したいと思います。リモートマシンにssh/scpできます

私が見た: コマンドの(巨大な)出力をリモートマシンに直接scpするにはどうすればよいですか?

プッシュではなくプルしたい

2
piotrek

同様の方法で行うことができます。

ssh -T [email protected] 'producing_command' > big.txt

サーバーで生成コマンドを実行し、ローカルファイルに書き込むだけです。

6
Jakuje

STDOUTとSSHを介した配管出力の回答には同意しますが、さまざまな視点を提供したいと思います。

リモートマシンでSSHfs(Fuseファイルシステム)を使用して、ローカルマシンからディレクトリをマウントし、そこに書き込むことができます。必要に応じて、これをローカルマシンからリモートマシンへの接続を介してトンネリングして戻すことができます。

例A:

LOCAL$  ssh [email protected]
REMOTE$ sshfs [email protected]:/directory/on/localmachine /directory/on/remotemachine
REMOTE$ bigstreamcommand >/directory/on/remotemachine/bigstreamfile

その結果、出力はゆっくりと/ directory/on/localmachine/bigstreamfileに書き込まれます。

直接SSH(ポートフォワードなしのNAT、CGNAT、ファイアウォールなど)でリモートマシンからローカルマシンに到達できない場合は、次の手順に従います。
例B:

LOCAL$  ssh [email protected] -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を参照してください。

1
TBR