Linux:いろいろなサーバの設定ファイルを集めたい のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Linux:いろいろなサーバの設定ファイルを集めたい へ行く。
- 1 (2013-10-17 (木) 21:55:33)
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