Webサーバを丸ごとバックアップするシェルスクリプト

  • 投稿日:
  • by
  • カテゴリ:

Webサーバのsdメモリが劣化故障し、停止せざるを得ない状況に陥るときがある。そこで週一回のバックアップ時に別機宛て、apacheやらmysqlの関連のデータを渡して、常に稼働させることにした。

現用のWebサーバ:Rpi4(4GB-RAM)+32GB(本体)+128GB(USB /home)+64GB(USB /pub)
別機のWebサーバ:Rpi3b+32DB(本体)+128GB(USB /home)+64GB(USB /pub)

といった構成。

まずは。現用のWebサーバの主要ファイルを/pub以下に保存するシェルスクリプト。週に1回稼働するよう、/etc/cron.weekly/ に hyper_backup なる名前で保存した。

root@hyper:/etc/cron.weekly# cat hyper_backup
#!/bin/sh

if [ -e /pub/backup_hyper*.tgz ]; then
rm /pub/backup_hyper*.tar
fi
if [ -d /pub/hyper* ]; then
rm -rf /pub/hyper*
fi

mkdir -p "/pub/backup_hyper"`date '+%Y%m%d'`"/"

cd /
tar czfp "/pub/backup_hyper"`date '+%Y%m%d'`"/etc.tgz" /etc

cd /etc
cp -p /etc/passwd "/pub/backup_hyper"`date '+%Y%m%d'`"/"
cp -p /etc/group "/pub/backup_hyper"`date '+%Y%m%d'`"/"
cp -p /etc/shadow "/pub/backup_hyper"`date '+%Y%m%d'`"/"
tar czfp "/pub/backup_hyper"`date '+%Y%m%d'`"/etc_letsencrypt.tgz" ./letsencrypt/
tar czfp "/pub/backup_hyper"`date '+%Y%m%d'`"/etc_samba.tgz" ./samba/
tar czfp "/pub/backup_hyper"`date '+%Y%m%d'`"/etc_apache2.tgz" ./apache2

cd /home
tar cfp "/pub/backup_hyper"`date '+%Y%m%d'`"/home.tar" ./[a-km-z]*

cd /var/lib
tar czfp "/pub/backup_hyper"`date '+%Y%m%d'`"/var_lib_mysql.tgz" ./mysql

cd "/pub/backup_hyper"`date '+%Y%m%d'`"/"
tar cfp "/pub/hyper"`date '+%Y%m%d'`".tar" ./*

exit 0
root@hyper:/etc/cron.weekly#

これを常用webサーバに入れる。

***注意***

  • /pub/backup_hyper?????? のディレクトリに、/etc/passwd,/etc/shadow,/etc/group 他、秘匿を要するファイルが含まれているので、インターネットに公開しないよう、httpd.confや.htaccessを充分検討お願いします。pgpで暗号化したら良いかな?
  • tarファイルの成否についてエラーチェックしてませんが、追加したほうが良い予感。