SSH接続を終了した後にrsync操作を完了する

SSH接続を終了した後にrsync操作を完了する

私は.NETを使用してあるコンピュータから別のコンピュータに多数のファイルを転送していますrsync。 SSHを介してソースマシンに接続し、次のコマンドを実行してこれを実行しました。

sudo rsync ssh --rsync-path="sudo rsync" source_dir [email protected]:dest_dir

このコマンドの前に追加しても、nohupSSHing中のターミナルウィンドウを閉じるたびに接続が閉じられます。

SSH接続が終了した場合にファイル転送を続行するにはどうすればよいですか?

答え1

これが役に立たない理由nohupは、プログラムが標準IOファイルを使用するためです。

これはから抜粋したものです。ウィキページnohupの場合:

注 - Nohppingバックグラウンドジョブは、通常、リモートSSHセッションからログアウトするときのジョブの終了を防ぐために使用されます。この状況でよく発生するもう1つの問題は、sshがバックグラウンドジョブでのデータ損失を拒否するため、ログアウト(「中止」)を拒否することです。この問題は、3つのI / Oストリームをすべてリダイレクトすることで解決できます。

nohup ./myprogram > foo.out 2> foo.err < /dev/null &また、SSHセッションを閉じても、常にHUP信号が関連プロセスに送信されるわけではありません。とりわけ、これは疑似端末が割り当てられているかどうかによって異なります。

あなたはそれを使用することができますscreen

以下を使用して画面セッションを作成します。次に+を使ってscreen -S rsync 画面を切り離します。CTRLA d

接続を切断できます。SSH

答え2

この画面コマンドは素晴らしいですが、必要なことはしません。

これははるかにうまく機能します:

nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &

関連情報