2016年4月30日土曜日

システムバックアップその17

ようやく、システムリストアの方に入れる。

システムリストアは最初の方でも書いたとおり、OSインストールメディアからブートして、レスキューモードで作業を行うことを想定している。

その中で、スクリプトで対応できる部分はスクリプト化してしまう。
3本のスクリプトと、それを束ねる親スクリプトの合計4本だ。
一つずつ作ってテストというわけには行かないので、全部一気に作ってしまおう。
(例によって、sudo su -をお忘れなく)
# cd
# cd backup/bin
# vi 1010_disk_rebuild

--ココから--
#!/bin/sh

BINDIR=`dirname $0`
ETCDIR=${BINDIR}/../etc

. ${ETCDIR}/config

for ROOTPV in ${ROOTPVS}
do
  sfdisk /dev/${ROOTPV} < ${BINDIR}/../config/sfdisk.${ROOTPV}
done

while read i j k
do
  eval $i
  eval $j
  eval $k
  pvcreate --uuid=${LVM2_PV_UUID} --norestorefile ${LVM2_PV_NAME}
done < ${BINDIR}/../config/vgs.pvid

vgcfgrestore -f ${BINDIR}/../config/vgcfgbackup.${ROOTVG} ${ROOTVG}
vgchange -a y ${ROOTVG}

--ココまで--

# vi 1020_create_filesystem
--ココから--
#!/bin/sh

BINDIR=`dirname $0`
ETCDIR=${BINDIR}/../etc

. ${ETCDIR}/config

# Get Filesystem Metadata
for FSCONFIG in ${ETCDIR}/fsconfig/*
do
  TYPE=""
  UUID=""
  LABEL=""
  DEVNAME=""

  . ${FSCONFIG}

  . ${BINDIR}/../config/blkid/${VOLNAME}

  if [    x${TYPE} = "xext2" \
       -o x${TYPE} = "xext3" \
       -o x${TYPE} = "xext4"   ]
  then
    mkfs.${TYPE} -U ${UUID} ${DEVNAME}
  elif [ x${TYPE} = "xvfat" ]
  then
    mkfs.fat ${DEVNAME}
    if [ x${LABEL} != "x" ]
    then
      fatlabel ${DEVNAME} ${LABEL}
    fi
  elif [ x${TYPE} = "xswap" ]
  then
    mkswap ${DEVNAME}
  fi

done

--ココまで--

# vi 1030_data_restore
--ココから--
#!/bin/sh

BINDIR=`dirname $0`
ETCDIR=${BINDIR}/../etc

. ${ETCDIR}/config

# File Restore Start
for FSCONFIG in ${ETCDIR}/fsconfig/*
do
  VOLNAME=""

  . ${FSCONFIG}

  . ${BINDIR}/../config/blkid/${VOLNAME}

  if [ x${TYPE} != "xswap" ]
  then
    mount -o rw ${DEVNAME} ${BINDIR}/../snapshot
    tar -xj \
        -f ${BINDIR}/../archive/${VOLNAME}.tbz \
        -C ${BINDIR}/../snapshot
    umount ${BINDIR}/../snapshot
  fi

done

--ココまで--

# vi 1000_restore
--ココから--
#!/bin/sh

BINDIR=`dirname $0`
cd ${BINDIR}
BINDIR=`pwd`

${BINDIR}/1010_disk_rebuild
${BINDIR}/1020_create_filesystem
${BINDIR}/1030_data_restore

--ココまで--

全部、実行パーミッションを付与しておこう。
# chmod +x 1000_restore
# chmod +x 1010_disk_rebuild
# chmod +x 1020_create_filesystem
# chmod +x 1030_data_restore


中身については、特に大きな解説は不要だろう。
1010でディスクパーティション情報を書き戻し、さらにLVM PV情報と、LVM VG情報の書き戻しを行っている。
1020で、swap領域を含めてファイルシステムの再作成を行っている。
1030で、アーカイブファイルを各ファイルシステムに書き戻す、とまぁこんな具合だ。
本当なら、1010はもう少し細かく分割しておくべきだったかもしれない。

次回はこれを使って、リストアを行おう。
リストアを行う前に、これまでの手順どおりにバックアップを取っておくように。

ではまた次回。

0 件のコメント:

コメントを投稿