#!/bin/sh
#============================================================================#
#                Backup critical information about system                    #
#============================================================================#
#  (C) Denis Smirnov <ds@seiros.ru>                             22 Aug 2008  #
#============================================================================#
. /usr/share/syskeeper/functions

D=$dir/diskdata

rm -rf $dir/diskdata
mkdir -p $D
pushd $dir/diskdata > /dev/null

> $D/blkid.tmp

ls -1 /sys/block \
		| grep -v ^ram \
		| grep -v ^zram \
		| grep -v ^dm \
		| grep -v ^loop \
		| grep -v ^md \
		| grep -v ^fd \
		| while read dev; do
	realdev=`echo $dev | sed 's%!%/%g'`
	if [ "x`cat /sys/block/$dev/removable`" == "x0" ]; then
		mkdir -p $D/$dev
                /sbin/udevadm info --query=property --name="$realdev" | grep -v '^USEC_INITIALIZED' | sort > $D/$dev/udevinfo
		dd if=/dev/$realdev of=$D/$dev/1st_block bs=4k count=1 > /dev/null 2> /dev/null

                if gdisk -l /dev/$realdev | grep -q 'GPT: present'; then
                    sgdisk -p /dev/$realdev > $D/$dev/sgdisk.txt
                    sgdisk --backup=$D/$dev/sgdisk.dump /dev/$realdev > /dev/null
                else
		    fdisk -l /dev/$realdev > $D/$dev/fdisk
		    fdisk -lu /dev/$realdev > $D/$dev/fdisk.sectors
		    sfdisk -d /dev/$realdev > $D/$dev/sfdisk.dump
                fi

	fi
done

## blkid
ls -1 /sys/class/block \
		| grep -v ^ram \
		| grep -v ^zram \
		| grep -v ^loop \
		| grep -v ^fd \
		| while read dev; do
	realdev=`echo $dev | sed 's%!%/%g'`
	if [ -f /sys/class/block/$realdev/dm/name ]; then
	    realdev=/dev/mapper/`cat /sys/class/block/$realdev/dm/name`
	else
	    realdev=/dev/$realdev
	fi
#	if [ "x`cat /sys/block/$dev/removable`" == "x0" ]; then
    	    blkid "$realdev" >> $D/blkid.tmp
#	fi
done

sort < $D/blkid.tmp > $D/blkid
rm -f $D/blkid.tmp

pvdisplay > $D/pvdisplay 2> /dev/null
vgdisplay > $D/vgdisplay 2> /dev/null
lvdisplay > $D/lvdisplay 2> /dev/null
echo "DEVICE partitions" > $D/mdadm.conf.auto
mdadm --detail --scan --verbose >> $D/mdadm.conf.auto 2> /dev/null
cat /etc/mdadm.conf > $D/mdadm.conf.tmp 2> /dev/null
mv -f $D/mdadm.conf.tmp $D/mdadm.conf
cat /etc/fstab > $D/fstab

popd > /dev/null

