トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Linux:いろいろなサーバの設定ファイルを集めたい のバックアップ(No.1)


Linux:いろいろなサーバの設定ファイルを集めたい

本シェルは、前提として、SSHの無認証ログイン設定が済んでいることです。※済んでいないと、scpするたびにパスワードをきかれます。

いろいろなサーバの設定ファイルを収集するスクリプトを作ってみました。

収集対象については、ホスト名、ファイルのフルパスをTSV形式で保存し、インプットとします。

■targetfiles.txt

test01 /etc/httpd/conf/httpd.conf
test01 /etc/hosts
test02 /etc/httpd/conf/httpd.conf
test03 /etc/httpd/conf/httpd.conf

サンプルシェルでは、ワーキングディレクトリは以下のディレクトリベタ打ちですw

  • /opt/confCollectTools?/

シェルの内容は以下のとおり

■confCollect.sh

BASEDIR=/opt/confCollectTools/
TARGETFILELIST=${BASEDIR}targetfiles.txt

SAVE_ROOT=${BASEDIR}collected/
SAVE_ROOT_OLD=${BASEDIR}collected_old/

rm -r ${SAVE_ROOT_OLD}
mv ${SAVE_ROOT} ${SAVE_ROOT_OLD}

cd ${BASEDIR}

egrep "^d2.*"  ${TARGETFILELIST} | while read LINE; 
do
  TARGETHOST=`echo $LINE | awk {'print $1'}`
  TARGET_FULLPATH=`echo $LINE | awk {'print $2'}`
  SAVE_DIR=`echo ${SAVE_ROOT}${TARGETHOST}/``echo ${TARGET_FULLPATH%/*} | sed -e 's/^\///' -e 's/\//_/g'`
#  echo "${TARGETHOST}  ${TARGET_FULLPATH}      ${SAVE_DIR}"
  mkdir -p ${SAVE_DIR}
  scp ${TARGETHOST}:${TARGET_FULLPATH} ${SAVE_DIR}
done

実行すると、「/opt/confCollectTools?/collected」ディレクトリ配下にホスト名でディレクトリを作成し、例えば「/etc/httpd/conf/httpd.conf」であれば「etc_httpd_conf」ディレクトリを作成してファイルを保存してくれます。 ※この仕様は個人的な好みです。

この収集したディレクトリ一式をSubversion等のリポジトリに自動で登録するようなスクリプトを組めばさらに幸せになれるかもw