パスワードが求められる「rsync」や「scp」を長時間バックグラウンド処理する時の方法




投稿日:

rsyncやscpなどのコマンドはその利用性質上、長時間走らせっぱなしにしないといけない事があります。
そんな時は、バックグラウンドで走らせて放置したいですよね。


rsyncやscpなどパスワードを求められるコマンドでは、最後に&を付ける方法では対応できません。
以下はrsyncコマンドを例に出します。



■rsync実行。大事なのは、ログを出力する事。

rsync -av -e ssh source user@remote:/path/to/backup > rsync.log


■ログを確認して、問題なさそうかを確認。

tail -f rsync.log


■問題がなければ、Ctrl+z で一旦停止。

Ctrl+z
[1]+  Stopped                 rsync -av -e ssh source user@remote:/path/to/backup > rsync.log


■jobs -l で番号確認

jobs -l
[1]+ 23050 停止しました        rsync -av -e ssh source user@remote:/path/to/backup > rsync.log

job番号は1と分かりました。

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

bg 1
[1]+ rsync -av -e ssh source user@remote:/path/to/backup > rsync.log &

このように、最後に「&」がついてバックグラウンド処理に移ります。

■disownコマンドでログアウトしても大丈夫にする disown %(ジョブ番号)

disown %1



これで、ログアウトしてしまっても、ジョブは走り続けてくれます。
ログも見れるので問題なし。





参考




http://devlog.atosaku.com/2013/06/%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AArsync%E3%82%84scp%E3%82%92%E9%95%B7%E6%99%82%E9%96%93%E3%83%90%E3%83%83%E3%82%AF%E3%82%B0%E3%83%A9%E3%82%A6%E3%83%B3/

http://www.maruko2.com/mw/rsync_%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E5%90%8C%E6%9C%9F%EF%BC%88%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%EF%BC%89

http://rksz.hateblo.jp/entry/2012/10/25/232512