スクリプトから Netcat を使用する (宛先にログインせずに)

スクリプトから Netcat を使用する (宛先にログインせずに)

私は自宅にあるすべての Unix デバイスを tar|pv|pigz|nc でローカル サーバーにバックアップする方法を設定しています。多くの例を見てきましたが、それらはすべて、最初に宛先マシンがポートをリッスンしている必要があります (たとえば、物理的にマシンにいる間、または ssh 経由で)。

nc -w 60 -l 19001 > /dir/to/backup.tgz

次に、現在のマシンからストリームの送信を開始します

tar -cpf - /dir/to/backup | pv | pigz | nc -w 10 dest.i.p.addr 19001

私はこれをスクリプト化して、このプロセス中にホストマシン上で複数のターミナルを開く必要がなくなり、ほぼワンクリックで実行できるようにしようとしています。通常、ssh経由でコマンドを送信すると、

ssh -f [email protected] "nc -w 60 -l 19001 > /dir/to/backup.tgz"

しかし、ポートが開いていて、データが転送され、受け入れられている間は、backup.tgz ファイルは作成されず、常に空として読み込まれます。このことから、ssh 経由でコマンドを 1 行で送信しても、リスニング ポートが開いたままにならないと考えられます。

表示されていない別のルートがあるのでしょうか、それとも、リスニング セッションを作成するには常に宛先マシンにログインする必要があるのでしょうか?

関連情報