#!/bin/sh host=$clientdir owd=/media/bs-rescue/bacula-rescue/clients usb=`blkid |grep bs-rescue|cut -d: -f1` usb=${usb%?} if [ -d working/diffdir ];then rm -r working/diffdir fi ########################## here we get disks infos mkdir -p working/diffdir blkid | awk '{ print $1 }'|grep -v loop|grep -v md|grep -v mapper|grep -v $usb|while read line;do line=${line%?} l=`echo $line |cut -d"/" -f3` echo "/dev/"$l > working/diffdir/uuid.$l a=`blkid $line |wc -w|xargs expr` while [ $a -ne 0 ];do blkid $line |awk "{print \$$a}"|grep UUID >/dev/null 2>&1 if [ $? = 0 ];then blkid $line |awk "{print \$$a}"|grep UUID>>working/diffdir/uuid.$l break fi if [ $a = 1 ];then echo $line >> working/diffdir/uuid.disks.with.no.uuid fi a=$(( a - 1)) done done fdisk -l |grep /dev|grep -v $usb|grep :|cut -d: -f1|cut -d" " -f2|while read line;do l=`echo $line |cut -d"/" -f3` dd if=$line of=working/diffdir/mbr.$l bs=1 count=512 >/dev/null 2>&1 done ############################## here we start to diff with the backed up files cd working/diffdir for i in `ls `;do ########## first by uuid diff $i $owd/$host/diskinfo/$i >/dev/null 2>&1 if [ ! $? = 0 ];then echo $i>>changedisks #else #i=${i%?} #echo "/dev/"`echo $i|cut -d. -f2` " previously /dev/"`echo $i|cut -d. -f2`>>newdisk fi done echo "">newdisk if [ -f changedisks ];then cat changedisks|while read line;do lin=${line%?} li=`echo $lin |cut -d. -f2` check=`cat newdisk|awk '{print $1}'` echo $check|grep $li if [ ! $? = 0 ];then echo $line|grep uuid>/dev/null 2>&1 if [ $? = 0 ];then i=`grep UUID $line` i=`echo $i|cut -d'"' -f2` i=`echo $i|cut -d'"' -f1` find $owd/$host/diskinfo -type f -exec grep -l $i {} +>/dev/null 2>&1 if [ $? = 0 ];then check=`cat newdisk|awk '{print $1}'` echo $check|grep $li if [ ! $? = 0 ];then a=`find $owd/$host/diskinfo/uuid.* -type f -exec grep -l $i {} +` a=`echo $a|cut -d/ -f8|cut -d. -f2` a=${a%?} echo "/dev/"`echo $lin|cut -d. -f2`" previously /dev/"$a>>newdisk fi fi fi if [ ! -f newdisk ];then echo "">newdisk fi #grep `echo $line|cut -d. -f2` `echo newdisk |awk '{print $1}'|cut -d/ -f3` > /dev/null 2>&1 a=`cat newdisk|awk '{print $1}'` echo $a|grep $li if [ ! $? = 0 ];then ########### then by mbr echo $line|grep mbr>/dev/null 2>&1 if [ $? = 0 ];then for i in `ls $owd/$host/diskinfo|grep mbr`;do diff $line $owd/$host/diskinfo/$i >/dev/null 2>&1 if [ $? = 0 ];then a=`cat newdisk|awk '{print $1}'` c=`echo $lin|cut -d. -f2` echo $a|grep $c if [ ! $? = 0 ];then echo "/dev/"`echo $line|cut -d. -f2` " previously /dev/"`echo $i|cut -d. -f2` >>newdisk fi fi done fi fi fi done fi fdisk -l |grep /dev|grep -v $usb |grep -v /dev/md|grep :|cut -d: -f1|cut -d" " -f2|while read line ;do b=1 cat newdisk |grep $line|while read i ;do a=`echo $i|cut -d" " -f1` if [ $a = $line ];then cat newdisk |grep $a|awk '{print $1}'|grep $a if [ ! $? = 0 ];then echo $i >> newdiskorder b=0 fi fi done if [ $b = 1 ];then cat newdisk |grep $line|awk '{print $1}'|grep $line if [ ! $? = 0 ];then echo $line "previously" $line>>newdiskorder fi fi done cd ../../