rsyncをcronで実行するのに必要なexpectの注意点

知り合いからWordPressサイトを別サーバーにバックアップしたいと相談されました。

WordPressなのでバックアップ用プラグインがあるだろうと探してみましたが…無料だとイマイチなのばかりでした。

サイトは素人さんが頑張って更新しているので、画像も縮小せずアップしていて、アホみたいに容量を消費する記事を毎日更新しているようなサイトでした。

そんな大容量サイトなので、uploadディレクトリをtarで固めて保存する方法でなく、差分バックアップを目指しました。

rsyncコマンドさんですね。

以前の記事でも書きましたが、サーバーログインに秘密鍵とか面倒で嫌いなのでパスワード認証です。

定期的にバックアップさせるのにcronを使いますが、パスワード認証だとexpectが必要になります。

  1 #!/bin/sh
  2 PASSWORD=“ぱすわーど”
  3 expect -c "
  4 set timeout -1
  5 spawn rsync -auz --bwlimit=1024 --delete --update ユーザー@元サーバー:ディレクトリ   保存ディレクトリ
  6 expect \"password:\"
  7 sleep 1
  8 send \"${PASSWORD}\r\"
  9 expect eof
 10 exit
 11 "

こんな感じのを保存してcronで実行すればOKです。

expectを解説している記事だとinteractで終わる記事も多いですが、cronの場合は駄目なのでexpect eofしましょう。

あと、set timeout -1しないと10秒くらいでタイムアウトしちゃいます。

バックアップ等は時間のかかる処理なのでタイムアウト無しにしましょう!

この2点でスッゲー悩みました…。

rsyncはやる度に「あれ?何かオプション必要だったよな…なんだっけ?」ってなります。

年取るとホントに記憶力が壊滅級になるよね…。

コメント

タイトルとURLをコピーしました