rsyncでNASにバックアップする

最近導入した NAS に、ローカルネットで運用している Web アプリのデータをバックアップする。

まずは NAS 側の設定。以下の2点。

  • バックアップ用ユーザーを作る
  • rsync を有効にして、バックアップ用ユーザーとパスワードを設定する

バックアップ用ユーザーのユーザーフォルダの中にデータをバックアップする、という形だ。パスワードじゃなく ssh でやりたかったんだけど、NAS が対応してないみたいなので仕方がない。

さて、アプリ側の設定。rsync コマンドを使うんだけど、パスワードを対話式で入力を求められるので、困った。やったことないぞ。

で、このページが参考になった。

expect コマンドで対話をシミュレートできるようだ。

そういうわけでまずは expect のインストール。

takatoh@unclemeat:~$ sudo apt install expect

それから、次のようにバックアップスクリプトを書いた。

#!/usr/bin/sh

NAS_HOST=rdnzl
NAS_PORT=873
NAS_USER=backupuser
NAS_PASSWD=backuppass

SRC_PATH=/mnt/data/app/photos/
DEST_PATH=home/app/photos

expect -c "
set timeout -1
spawn rsync -azv --delete --port ${NAS_PORT} ${SRC_PATH} ${NAS_USER}@${NAS_HOST}::${DEST_PATH}
expect \"Password: \"
send \"${NAS_PASSWD}\n\"
expect eof
"

/mnt/data/app/photos フォルダ以下のデータを、NAS のバックアップ用ユーザーフォルダの app/photos フォルダにバックアップする。rsync コマンドがパスワードを聞いてきたら入力する、というのを expect コマンドがやってくれる。

さて、これで無事バックアップが取れるようになった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください