|
@@ -0,0 +1,218 @@
|
|
|
+#!/bin/bash
|
|
|
+clear
|
|
|
+
|
|
|
+LoclaIP="10.0.4.13"
|
|
|
+Rshot="Raid10_pool"
|
|
|
+Rserver="root@10.0.4.1"
|
|
|
+Ldest="testpool/test"
|
|
|
+logfile="/mnt/NFSUsers/thierry423/$0.log"
|
|
|
+loadedtape="/mnt/NFSUsers/thierry423/loadedtape.cnf"
|
|
|
+
|
|
|
+loaderdev="/dev/sg9"
|
|
|
+
|
|
|
+prepair () {
|
|
|
+echo "prepair / rewind tape drive's" >> $logfile
|
|
|
+#element 2 & 3 full Raid10_pool testzfsshot5remote
|
|
|
+#mtx -f $loaderdev unload 5 0
|
|
|
+#mtx -f $loaderdev unload 6 1
|
|
|
+#mtx -f $loaderdev load 7 0
|
|
|
+#mtx -f $loaderdev load 8 1
|
|
|
+
|
|
|
+mt -f /dev/st0 rewind&
|
|
|
+mt -f /dev/st1 rewind
|
|
|
+wait
|
|
|
+}
|
|
|
+
|
|
|
+choustape () {
|
|
|
+wk=$(date +%V)
|
|
|
+x=7;z=0;tp=1
|
|
|
+while [ $z -lt 1 ]
|
|
|
+ do
|
|
|
+ if [[ $wk -lt $x ]]; then
|
|
|
+ break
|
|
|
+ else
|
|
|
+ x=$[$x+8]
|
|
|
+ tp=$[$tp+1]
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ echo "tape period: " $tp
|
|
|
+ if [[ $tp = 1 ]]; then tp=0; fi
|
|
|
+ if [[ $tp = 2 ]]; then tp=2; fi
|
|
|
+ if [[ $tp = 3 ]]; then tp=12; fi
|
|
|
+ if [[ $tp = 4 ]]; then tp=14; fi
|
|
|
+ if [[ $tp = 5 ]]; then tp=24; fi
|
|
|
+ if [[ $tp = 6 ]]; then tp=26; fi
|
|
|
+ if [[ $tp = 7 ]]; then tp=36; fi
|
|
|
+if [[ $1 = 1 ]]; then
|
|
|
+ slotnr=$[1+$tp]
|
|
|
+ fi
|
|
|
+if [[ $1 = 2 ]]; then
|
|
|
+ slotnr=$[5+$tp]
|
|
|
+ fi
|
|
|
+if [[ $1 = 3 ]]; then
|
|
|
+ slotnr=$[9+$tp]
|
|
|
+ fi
|
|
|
+#slotnr=$[$slotnr + 1]
|
|
|
+ mtx -f $loaderdev load $[$slotnr ] 0
|
|
|
+ mtx -f $loaderdev load $[$slotnr + 1] 1
|
|
|
+ if [[ $? != 0 ]]; then
|
|
|
+ echo "failed to change to next 2 Tape's"
|
|
|
+ echo "failed to change to next 2 Tape's" >> $logfile
|
|
|
+ exit
|
|
|
+ else
|
|
|
+ echo "tapes $slotnr loaded"
|
|
|
+ echo "tapes $slotnr +0 loaded in drive 0" >> $logfile
|
|
|
+ echo "tapes $slotnr +1 loaded in drive 1" >> $logfile
|
|
|
+ fi
|
|
|
+return $slotnr
|
|
|
+}
|
|
|
+
|
|
|
+ejec () {
|
|
|
+mt -f /dev/st0 rewind&
|
|
|
+mt -f /dev/st1 rewind
|
|
|
+wait
|
|
|
+mtx -f $loaderdev unload $num_tape 0
|
|
|
+mtx -f $loaderdev unload $[$num_tape + 1] 1
|
|
|
+ echo "rewind & ejected $num_tape & $num_tape + 1 from drive 0 & 1"
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+writetotape () {
|
|
|
+ killall mbuffer
|
|
|
+ b="0"
|
|
|
+ a="0"
|
|
|
+ ssh $Rserver zfs snapshot -r $Rshot@tapeshot0
|
|
|
+ echo "created remote snapshot & start lockal mbuffer" >> $logfile
|
|
|
+ #ssh $Rserver zfs send -R $Rshot@tapeshot0 | dd of=/dev/null status=progress
|
|
|
+ mbuffer -d 8m -m 512M -I 9090 -o /dev/nst0 -o /dev/nst1 >> $logfile & #Start mbufferserver
|
|
|
+ sleep 3
|
|
|
+ ssh $Rserver zfs send -R $Rshot@tapeshot0 | mbuffer -q -m 512M -O $LoclaIP:9090
|
|
|
+ echo "writen snapshot to tape's" >> $logfile
|
|
|
+ wait
|
|
|
+ sleep 4
|
|
|
+ b=$[$b+1]
|
|
|
+ while [ $a -lt 1 ]
|
|
|
+ do
|
|
|
+ SECONDS=0
|
|
|
+ tapeshotnr="tapeshot$b"
|
|
|
+ ssh $Rserver zfs snapshot -r $Rshot@$tapeshotnr
|
|
|
+ #ssh $Rserver zfs send -R -i $Rshot@tapeshot$[$b-1] $Rshot@$tapeshotnr | dd of=/dev/nst1 bs=1M status=progress
|
|
|
+ mbuffer -d 8m -m 512M -I 9190 -o /dev/nst0 -o /dev/nst1 >> $logfile & #Start mbufferserver
|
|
|
+ sleep 3
|
|
|
+ ssh $Rserver zfs send -R -i $Rshot@tapeshot$[$b-1] $Rshot@$tapeshotnr | mbuffer -m 512M -O $LoclaIP:9190
|
|
|
+ wait
|
|
|
+ sleep 4
|
|
|
+ a=$[$a+1]
|
|
|
+ b=$[$b+1]
|
|
|
+ duration=$SECONDS
|
|
|
+ echo "$(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
|
|
|
+ if [[ $(($duration / 60)) -lt 1 ]]; then
|
|
|
+ echo "snapshot took les then 1 minut. done " >> $logfile
|
|
|
+ a="1"
|
|
|
+ else
|
|
|
+ echo "snapshot took longer then 1minut...do a next increimental snap and send to tape" >> $logfile
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ while [ $b -gt 0 ]
|
|
|
+ do
|
|
|
+ b=$[$b-1]
|
|
|
+ ssh $Rserver zfs destroy -r $Rshot@tapeshot$b
|
|
|
+ echo "destroyed remote snapshot" >> $logfile
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+Writetozpool () {
|
|
|
+a="1"
|
|
|
+b="0"
|
|
|
+while [ $b -lt 1 ]
|
|
|
+do
|
|
|
+zfs destroy -r testpool/test1
|
|
|
+zfs destroy -r testpool/test2
|
|
|
+sleep 3
|
|
|
+ dd if=/dev/nst0 bs=64K status=progress | zfs receive -F testpool/test1
|
|
|
+ dd if=/dev/nst1 bs=64K status=progress | zfs receive -F testpool/test2
|
|
|
+ if [[ $? != 0 ]]; then
|
|
|
+ echo "No more snapshots on tape latest was $a"
|
|
|
+ b="1"
|
|
|
+ else
|
|
|
+ echo "snapshot $a received"
|
|
|
+ a=$[$a+1]
|
|
|
+ fi
|
|
|
+done
|
|
|
+}
|
|
|
+
|
|
|
+if [[ $1 = 1 ]]; then
|
|
|
+ echo "running 7 week Backup @ $(date)" >> $logfile
|
|
|
+ tape="$(choustape 1)"
|
|
|
+ num_tape=$?
|
|
|
+ Rshot="Raid10_pool/Users"
|
|
|
+ prepair
|
|
|
+ writetotape
|
|
|
+ ejec $num_tape
|
|
|
+ echo "writen $Rhost to $num_tape" >>$logfile
|
|
|
+ tape="$(choustape 2)"
|
|
|
+ num_tape=$?
|
|
|
+ Rshot="Raid10_pool/System"
|
|
|
+ prepair
|
|
|
+ writetotape
|
|
|
+ Rshot="Raid10_pool/var"
|
|
|
+ writetotape
|
|
|
+ ejec $num_tape
|
|
|
+ echo "writen $Rhost to $num_tape" >>$logfile
|
|
|
+ tape="$(choustape 3)"
|
|
|
+ num_tape=$?
|
|
|
+ Rserver="root@10.0.4.3"
|
|
|
+ Rshot="BIG_pool/Media"
|
|
|
+ prepair
|
|
|
+ writetotape
|
|
|
+ ejec $num_tape
|
|
|
+ fi
|
|
|
+if [[ $1 = 2 ]]; then
|
|
|
+ tape="$(choustape $2)"
|
|
|
+ num_tape=$?
|
|
|
+ prepair
|
|
|
+ Writetozpool
|
|
|
+ ejec $num_tape
|
|
|
+ echo "writen /Media & $Rhost to $num_tape" >>$logfile
|
|
|
+ fi
|
|
|
+if [[ $1 = 3 ]]; then
|
|
|
+ prepair
|
|
|
+ Writetozpool
|
|
|
+ fi
|
|
|
+if [[ $1 = 4 ]]; then
|
|
|
+ Rserver="root@10.0.4.2"
|
|
|
+ Rshot="Raid10_pool/Users"
|
|
|
+ echo "4 is for testing killall mbuffer & dd @start"
|
|
|
+ killall mbuffer
|
|
|
+ killall dd
|
|
|
+ tape="$(choustape $2)"
|
|
|
+ num_tape=$?
|
|
|
+ prepair
|
|
|
+ writetotape
|
|
|
+ S prepair
|
|
|
+ # Writetozpool
|
|
|
+ ejec $num_tape
|
|
|
+ fi
|
|
|
+ if [[ $1 = 5 ]]; then
|
|
|
+ echo "Load current Backuptapes"
|
|
|
+ killall mbuffer
|
|
|
+ killall dd
|
|
|
+ tape="$(choustape $2)"
|
|
|
+ num_tape=$?
|
|
|
+ prepair
|
|
|
+read -p "Press any key to unload backuptapes tapes... " -n1 -s
|
|
|
+ ejec $num_tape
|
|
|
+ fi
|
|
|
+if [[ $1 = 9 ]]; then
|
|
|
+ echo "load non backuptapes 40 39"
|
|
|
+ mtx -f $loaderdev load 39 0
|
|
|
+ mtx -f $loaderdev load 40 1
|
|
|
+ read -p "Press any key to unload non backuptapes tapes... " -n1 -s
|
|
|
+ mtx -f $loaderdev unload 39 0
|
|
|
+ mtx -f $loaderdev unload 40 1
|
|
|
+fi
|
|
|
+
|
|
|
+killall mbuffer
|
|
|
+wait
|
|
|
+
|
|
|
+
|