すでに実行中の scp プロセスを一時停止する方法はありますか?

すでに実行中の scp プロセスを一時停止する方法はありますか?

を使用して大きなファイルをコピーしているのですscpが、コピー先にコピーを完了するのに十分なスペースがない可能性があることに気付きました。コピーを一時停止し、数時間後に再開する方法はありますか? また、コピーが失敗した場合 ( no space left on device)、スペースを空けたら再開できますか?

(scpすでに実行されていることに注意してください。別のプログラムを使用するなどの解決策は機能しません。)

答え1

SIGSTOP を使用してプロセスを一時停止し、後で SIGCONT を使用してプロセスを続行できます。(kill -lシグナルのリストについては を参照し、psプロセス ID を取得するには を使用します)。

ただし、これが機能しない可能性も十分にあります。たとえば、送信元と送信先の間に、デッド接続を検出して「クリーンアップ」するルーターがある場合などです。ほとんどの SOHO ルーターは、接続をクリーンアップするとメモリ使用量が少なくなるため、これを実行するようです。(そのため、より安価なルーターを構築できます)。

そのような場合は、scp を使用して再度コピーするか、rsync を使用する必要があります。

Rsyncには、既存のファイルを比較し、不必要なデータをコピーしないという利点があります。あなたの場合、すでに存在する部分的にアップロードされたファイルを検出し、ファイルの残りの部分のみをアップロードするはずです。

構文は次のようになりますrsync -v -e ssh /home/my_file [email protected]:~

-v は詳細表示です。 -e "ssh options" は ssh をリモート シェルとして指定します。

データが圧縮可能な場合は、-zデータを圧縮するために追加することをお勧めします。

関連情報