nohupコマンドとrsyncコマンドを使うとき

nohupコマンドとrsyncコマンドを用いた際に上手くいきませんでしたので、その原因と解決方法を紹介します。

事の経緯

rsyncコマンドでバックアップを取ろうとしたものの、時間がかかりそうなので、nohupコマンドでログアウトしようとしました。

因みに、rsyncコマンドとnohupコマンドの使い方は以下を参照してください。

しかし、バックアップ出来ませんでした。

本記事では、バックアップ出来ない理由と解決方法を紹介します。

原因

バックアップを取ろうとしたリモートサーバーには、パスワードで検証することになっていました。

しかし、nohupコマンドでは、パスワードを入力することが出来ない為、パスワードを入力待ちになって、バックアップができていませんでした。

解決方法

公開鍵認証方式にする

原因で述べた通り、パスワード入力することがバックアップが出来ない理由でした。

リモートサーバーにアクセスする方法として、パスワード方式を辞めて、公開鍵認証方式があります。

公開鍵認証方式にすることで解決することができます。

詳しくは以下の記事を参照してください。

こうする事で、パスワードを求められないため、バックアップすることができます。

disownコマンドを用いる

こちらの方が簡単です。

最初は、普通にrsyncコマンドを実行します。

ここで、注意する点として、ログを出力してください。

$ rsync -av tanaka@168.192.1.1:/mnt/data /var/www/html > sample.log

パスワードを入力したら、Ctrl+Zでサスペンドしましょう。

$ 
^Z
[1]+  Stopped      rsync -av tanaka@168.192.1.1:/mnt/data /var/www/html

bgコマンドとジョブ番号でバックグラウンドへ

&を付けて、バックグラウンド処理にします。

bg 1
[1]+ rsync -av tanaka@168.192.1.1:/mnt/data /var/www/html > sample.log &

その後、disownコマンドで%ジョブ番号で実行しましょう。

$ disown %1

実行後、以下のような警告メッセージが出た場合、うまく機能していません。

-bash: warning: deleting stopped job 1 with process group 8147

まとめ

nohupコマンドとrsyncコマンドを用いて、うまくいかない場合は、パスワード方式になっているから。

解決方法として、公開鍵認証方式にするか、disownコマンドを用いましょう。