rsync
を使用して、あるコンピュータから別のコンピュータに大量のファイルを転送しています。私はソースコンピューターにSSHで接続し、次のようなコマンドを実行してこれを行っています。
Sudo rsync ssh --rsync-path="Sudo rsync" source_dir [email protected]:dest_dir
。
このコマンドの前にNohup
を追加しても、SSHで接続したターミナルウィンドウを閉じると、接続が閉じます。
SSH接続を閉じてもファイル転送が続行されるようにするにはどうすればよいですか?
Nohup
が役に立たない理由は、プログラムが標準のIOファイルで動作するためです。
これは、Nohupの Wikiページ からの抜粋です:
注-バックグラウンドジョブのnohuppingは、通常、リモートSSHセッションからログオフするときにジョブが終了しないようにするために使用されます。この状況でよく発生する別の問題は、sshがバックグラウンドジョブとの間のデータの損失を拒否するため、ログオフを拒否する(「ハング」)ことです。この問題は、3つすべてのI/Oストリームをリダイレクトすることでも解決できます。
Nohup ./myprogram > foo.out 2> foo.err < /dev/null &
また、SSHセッションを閉じると、依存するプロセスにHUP信号が送信されない場合もあります。とりわけ、これは疑似端末が割り当てられたかどうかに依存します。
screen
を使用できます。
次のコマンドでscreenセッションを作成するだけです:screen -S rsync
次に、画面を切り離します CTRL+Ad
[〜#〜] ssh [〜#〜]から切断できます
この画面コマンドは問題ありませんが、私のニーズには正確に対応していませんでした。
これははるかにうまくいきました:
Nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &