]> git.sur5r.net Git - bacula/rescue/blob - rescue/linux/usb/src/scripts/restore/get_serial_restore
Add new usb rescue key code
[bacula/rescue] / rescue / linux / usb / src / scripts / restore / get_serial_restore
1 #!/bin/sh
2 host=$clientdir
3 owd=/media/bs-rescue/bacula-rescue/clients                                              
4 usb=`blkid |grep bs-rescue|cut -d: -f1`
5 usb=${usb%?}
6 if [ -d working/diffdir ];then
7 rm -r  working/diffdir
8 fi
9
10 ########################## here we get disks infos
11 mkdir -p working/diffdir
12  blkid | awk '{ print $1 }'|grep -v loop|grep -v md|grep -v mapper|grep -v $usb|while read line;do
13 line=${line%?}
14 l=`echo $line |cut -d"/" -f3`
15 echo "/dev/"$l > working/diffdir/uuid.$l
16
17
18 a=`blkid $line |wc -w|xargs expr`
19 while [ $a -ne 0 ];do
20 blkid $line |awk "{print \$$a}"|grep UUID >/dev/null 2>&1
21 if [ $? = 0 ];then
22 blkid $line |awk "{print \$$a}"|grep UUID>>working/diffdir/uuid.$l
23 break
24 fi
25 if [ $a = 1 ];then
26 echo $line >> working/diffdir/uuid.disks.with.no.uuid
27
28 fi
29 a=$(( a - 1))
30 done
31
32 done
33
34 fdisk -l |grep /dev|grep -v $usb|grep :|cut -d: -f1|cut -d" " -f2|while read line;do
35 l=`echo $line |cut -d"/" -f3`
36
37 dd if=$line of=working/diffdir/mbr.$l bs=1 count=512 >/dev/null 2>&1
38 done
39
40 ############################## here we start to diff with the backed up files
41 cd working/diffdir
42 for i in `ls `;do                ########## first by uuid
43 diff $i $owd/$host/diskinfo/$i >/dev/null 2>&1
44 if [ ! $? = 0 ];then
45 echo $i>>changedisks
46 #else
47 #i=${i%?}
48 #echo "/dev/"`echo $i|cut -d. -f2` " previously /dev/"`echo $i|cut -d. -f2`>>newdisk
49 fi
50 done
51
52 echo "">newdisk
53
54 if [ -f changedisks ];then
55 cat changedisks|while read line;do
56 lin=${line%?}
57 li=`echo $lin |cut -d. -f2`
58 check=`cat newdisk|awk '{print $1}'`
59 echo $check|grep $li
60 if [ ! $? = 0 ];then
61 echo $line|grep uuid>/dev/null 2>&1
62   if [ $? = 0 ];then
63   i=`grep UUID $line`
64  i=`echo $i|cut -d'"' -f2`
65  i=`echo $i|cut -d'"' -f1`
66    find $owd/$host/diskinfo -type f -exec grep -l $i {} +>/dev/null 2>&1
67     if [ $? = 0 ];then
68        check=`cat newdisk|awk '{print $1}'`
69        
70        echo $check|grep $li
71           if [ ! $? = 0 ];then   
72     a=`find $owd/$host/diskinfo/uuid.* -type f -exec grep -l $i {} +`
73     a=`echo $a|cut -d/ -f8|cut -d. -f2`
74     a=${a%?}
75     
76     echo "/dev/"`echo $lin|cut -d. -f2`" previously /dev/"$a>>newdisk
77           fi
78     fi
79
80   fi
81             if [ ! -f newdisk ];then
82             echo "">newdisk
83             fi  
84 #grep `echo $line|cut -d. -f2` `echo newdisk |awk '{print $1}'|cut -d/ -f3` > /dev/null 2>&1
85           a=`cat newdisk|awk '{print $1}'`
86        
87           echo $a|grep $li
88           if [ ! $? = 0 ];then   
89            ########### then by mbr
90
91        echo $line|grep mbr>/dev/null 2>&1
92        if [ $? = 0 ];then
93          for i in `ls $owd/$host/diskinfo|grep mbr`;do
94          diff $line $owd/$host/diskinfo/$i >/dev/null 2>&1
95                   if [ $? = 0 ];then
96                   a=`cat newdisk|awk '{print $1}'`
97                   c=`echo $lin|cut -d. -f2`
98                   echo $a|grep $c
99                       if [ ! $? = 0 ];then  
100                     echo "/dev/"`echo $line|cut -d. -f2` " previously /dev/"`echo $i|cut -d. -f2` >>newdisk
101                       fi
102                   fi
103          done
104        fi        
105
106      fi
107 fi
108 done
109 fi
110
111 fdisk -l |grep /dev|grep -v $usb |grep -v /dev/md|grep :|cut -d: -f1|cut -d" " -f2|while read line ;do
112 b=1
113   cat newdisk |grep $line|while read i ;do
114   a=`echo $i|cut -d" " -f1`
115     if [ $a = $line ];then
116     cat newdisk |grep $a|awk '{print $1}'|grep $a
117         if [ ! $? = 0 ];then
118          echo $i >> newdiskorder
119          b=0
120         fi
121      fi
122   done
123 if [ $b = 1 ];then
124  cat newdisk |grep $line|awk '{print $1}'|grep $line
125         if [ ! $? = 0 ];then
126 echo $line "previously" $line>>newdiskorder
127         fi
128 fi
129 done
130 cd ../../
131
132
133
134