私は.NETを使用してあるコンピュータから別のコンピュータに多数のファイルを転送していますrsync
。 SSHを介してソースマシンに接続し、次のコマンドを実行してこれを実行しました。
sudo rsync ssh --rsync-path="sudo rsync" source_dir [email protected]:dest_dir
。
このコマンドの前に追加しても、nohup
SSHing中のターミナルウィンドウを閉じるたびに接続が閉じられます。
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 &