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コマンドを用いましょう。