あるサーバーから別のサーバーに〜50GBのフォルダーをコピーしたい。これは当然ながらかなり時間がかかるので、「バックグラウンドで」実行できるようにしたいと思います。標準のSCPコマンドを使用するには、コンソールを開いたままにしておく必要があります。私はNohup
について読んでいますが、これでうまくいくはずですが、機能させるのに苦労しています。この場合でも、コンソールを開いたままにしておく必要があります。コマンドを入力した後、Nohup
プログラムは開いたままになります。 CTRL+C 終了するには、転送が停止します。 Nohup
の機能を誤解していますか?または、他にどのようにこれを達成できますか?
scp
セッションからscreen
を開始し、screen
からデタッチをコピーしたら、いつでもそのスクリーンセッションに戻ってその方法を確認する方が簡単だと思います行きます。
screen
scp foo bar
Ctrla に続く d 画面からデタッチするには
次に、画面に再接続します。
screen -x
名前Nohup
は、HUP
シグナルを指します。これは、端末がサーバーに接続された(電話)回線がハングアップしたときにプロセスに従来送信されていました。 Nohup
は、現在「ハングアップ」が「端末ウィンドウを閉じる」ことを意味する場合でも、その信号が送信されないようにします。
tl; drサーバーから定期的にログアウトする代わりに、ターミナルウィンドウを閉じる(または、あなたの側でssh接続を終了する)だけです。 Nohup
は、何らかの方法で端末接続が切断された場合でも、プロセスを実行し続けます。
まあ、いくつかの問題があります。
バックグラウンドでコマンドを実行する場合は、&
をコマンドに追加する必要があります。 Nohup scp file server:path/ &
のようなもの。バックグラウンドで実行され、コンソールを閉じてもファイルは転送されます。
sftp
の代わりにscp
を使用します。これにより、パフォーマンスが大幅に向上します(特に大きなファイルの場合)。 SCPは非常に遅いです。 sftp
でもバッチモードをサポートしています:sftp -b <(echo "cd path"; echo "put file") server &