LinuxサーバーからApache、MySQL、PHPの設定だけ抜き出してバックアップする

サーバー周りでよく変更されるデータやコンテンツはバックアップをとっていても設定ファイルはおろそかになりがちです。いざというときには最低限の設定ファイルだけでもバックアップしておくと万が一の際の復旧が楽になります。

#!/bin/sh
FILE_LIST=()

FILE_LIST+=( "/etc/httpd --exclude logs --exclude modules --exclude run" )
FILE_LIST+=( "/etc/my.cnf" )
FILE_LIST+=( "/etc/php.ini" )
FILE_LIST+=( "/etc/php.d" )

ESTIMATED_SIZE=0
(
i=0
IFS=$'\n'
for e in ${FILE_LIST[@]}; do
    LINEPATH=`echo ${e} | sed -e "s/[ \t]\+/ /g" | cut -f1 -d' '`
    if [ -e $LINEPATH ]; then
      for line in `echo ${e} | xargs du -sb | sed -e "s/[ \t]\+/ /g" | cut -f1 -d' '` 
      do 
        ESTIMATED_SIZE=`expr ${ESTIMATED_SIZE} + ${line}`
      done
    else
      echo "[INFO] ${LINEPATH} does not exists. skipped."
    fi
    i=`expr ${i} + 1`
done

ESTIMATED_SIZE_RAW=${ESTIMATED_SIZE}
ESTIMATED_SIZE_UNIT="byte"
if [ ${ESTIMATED_SIZE} -gt 1024 ]; then
  ESTIMATED_SIZE=`expr ${ESTIMATED_SIZE} / 1024`
  ESTIMATED_SIZE_UNIT="K"
fi

if [ ${ESTIMATED_SIZE} -gt 1024 ]; then
  ESTIMATED_SIZE=`expr ${ESTIMATED_SIZE} / 1024`
  ESTIMATED_SIZE_UNIT="M"
fi

if [ ${ESTIMATED_SIZE} -gt 1024 ]; then
  ESTIMATED_SIZE=`expr ${ESTIMATED_SIZE} / 1024`
  ESTIMATED_SIZE_UNIT="G"
fi

echo ""
read -p "バックアップ対象ファイルの合計サイズは ${ESTIMATED_SIZE}${ESTIMATED_SIZE_UNIT} です。/tmp 以下にバックアップファイルを作成しますか?  (y/n) :" YN
if [ "${YN}" = "y" ]; then
  :
else
  exit 1;
fi

echo `date` > /tmp/backup_settings_date.txt
tar -cf /tmp/backup_settings.tar /tmp/backup_settings_date.txt 2> /dev/null
for e in ${FILE_LIST[@]}; do
    LINEPATH=`echo ${e} | sed -e "s/[ \t]\+/ /g" | cut -f1 -d' '`
    if [ -e $LINEPATH ]; then
      echo ${e} | xargs tar -rf /tmp/backup_settings.tar 2> /dev/null
    fi
    i=`expr ${i} + 1`
done

cd /tmp/
gzip backup_settings.tar
cd - 2> /dev/null 1> /dev/null
ls -lath /tmp/backup_settings*
)