|
@@ -0,0 +1,185 @@
|
|
|
+#!/bin/bash
|
|
|
+clear
|
|
|
+
|
|
|
+LoclaIP="10.0.4.2"
|
|
|
+Rshot="Raid10_pool"
|
|
|
+RserverIP="10.0.4.1"
|
|
|
+Rserver="root@$RserverIP"
|
|
|
+Ldest="testpool/test"
|
|
|
+DATE=`date +%Y-%m-%d`
|
|
|
+logfile="/mnt/NFSUsers/thierry423/PToTape/$0_$DATE.log"
|
|
|
+#loadedtape="/mnt/NFSUsers/thierry423/loadedtape.cnf"
|
|
|
+testfile="/mnt/NFSUsers/thierry423/latest-p_run.log"
|
|
|
+loaderdev="/dev/sg10"
|
|
|
+c="0"
|
|
|
+mkdir /mnt/NFSUsers ; mount $RserverIP:/mnt/bigpart/Users /mnt/NFSUsers
|
|
|
+#ioslot="X"
|
|
|
+
|
|
|
+prepair () {
|
|
|
+#echo "prepair / rewind tape drive's" >> $logfile
|
|
|
+
|
|
|
+mt -f /dev/st0 rewind&
|
|
|
+mt -f /dev/st1 rewind
|
|
|
+wait
|
|
|
+}
|
|
|
+
|
|
|
+function 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 >> $logfile
|
|
|
+ echo $tp > $testfile
|
|
|
+ if [[ $tp = 1 ]]; then tp=1; fi ###buggg work around next if....
|
|
|
+ if [[ $tp = 2 ]]; then tp=9; fi
|
|
|
+ if [[ $tp = 3 ]]; then tp=11; fi
|
|
|
+ if [[ $tp = 4 ]]; then tp=21; fi
|
|
|
+ if [[ $tp = 5 ]]; then tp=23; fi
|
|
|
+ if [[ $tp = 6 ]]; then tp=33; fi
|
|
|
+ if [[ $tp = 7 ]]; then tp=35; fi
|
|
|
+if [[ $1 = 1 ]]; then
|
|
|
+ slotnr=$[1+$tp]
|
|
|
+ ioslot="46"
|
|
|
+ fi
|
|
|
+if [[ $1 = 2 ]]; then
|
|
|
+ slotnr=$[5+$tp]
|
|
|
+ if [[ $tp = 1 ]]; then slotnr=5; fi ###buggg work around
|
|
|
+ ioslot="47"
|
|
|
+ fi
|
|
|
+if [[ $1 = 3 ]]; then
|
|
|
+ slotnr=$[9+$tp]
|
|
|
+ if [[ $tp = 1 ]]; then slotnr=8; fi ###buggg work around
|
|
|
+ ioslot="48"
|
|
|
+ fi
|
|
|
+ mtx -f $loaderdev load $[$slotnr ] 0 >> $logfile
|
|
|
+ slotnr2=$[$slotnr+1]
|
|
|
+ mtx -f $loaderdev load $[$slotnr2 ] 1 >> $logfile
|
|
|
+ echo "$ioslot:$slotnr:$slotnr2"
|
|
|
+ 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 "$ioslot:$slotnr:$slotnr2"
|
|
|
+ #echo "tapes $slotnr loaded"
|
|
|
+ fi
|
|
|
+#return $slotnr
|
|
|
+}
|
|
|
+
|
|
|
+ejec () {
|
|
|
+mt -f /dev/st0 rewind&
|
|
|
+mt -f /dev/st1 rewind
|
|
|
+wait
|
|
|
+mtx -f $loaderdev unload $1 0
|
|
|
+mtx -f $loaderdev unload $2 1
|
|
|
+ echo "rewind & ejected to slot $1 & $2 from drive 0 & 1" >> $logfile
|
|
|
+ echo " " >> $logfile
|
|
|
+}
|
|
|
+
|
|
|
+writetotape () {
|
|
|
+ #killall mbuffer
|
|
|
+ b="0"
|
|
|
+ a="0"
|
|
|
+ c="$1"
|
|
|
+ echo "created remote snapshot & start mbuffer" >> $logfile
|
|
|
+ ssh $Rserver zfs snapshot -r $Rshot@tapeshot0 >> $logfile
|
|
|
+ sleep 3
|
|
|
+ ssh $Rserver zfs send -R $Rshot@tapeshot0 |mbuffer -L -Q -P 90 -s 8388608 -m 6G -o /dev/nst0 -l mbuftmp.tmp
|
|
|
+ echo "writen full-snapshot to tape" >> $logfile
|
|
|
+ cat mbuftmp.tmp >> $logfile
|
|
|
+ wait
|
|
|
+ c=$[$c+1]
|
|
|
+ ssh $Rserver zfs destroy -r $Rshot@tapeshot0 >> $logfile
|
|
|
+ echo "destroyed remote snapshot" >> $logfile
|
|
|
+ echo "writen $Rshot to tape nr: $num_tape whit or whitout errors. Next?" >>$logfile
|
|
|
+ echo " " >> $logfile
|
|
|
+ return $c
|
|
|
+}
|
|
|
+
|
|
|
+CloneTape () {
|
|
|
+ echo "Start Cloning of tapes"
|
|
|
+ prepair
|
|
|
+ a="1"
|
|
|
+ b="0"
|
|
|
+ c="$1"
|
|
|
+ echo "clone tape $num_tape to $num_tape2 @ $(date)" >> $logfile
|
|
|
+ while [ $c -gt 0 ]
|
|
|
+ do
|
|
|
+ dd if=/dev/nst0 bs=8388608 | mbuffer -L -P 75 -s 8388608 -m 6G -o /dev/nst1 -l mbuftmp.tmp
|
|
|
+ cat mbuftmp.tmp >> $logfile
|
|
|
+ echo "track $a from drive0 received" >> $logfile
|
|
|
+ a=$[$a+1]
|
|
|
+ c=$[$c-1]
|
|
|
+done
|
|
|
+ echo "no more tracks on tape, total of $a tracks" >> $logfile
|
|
|
+}
|
|
|
+
|
|
|
+Writetozpool () {
|
|
|
+echo "Write To test Zpool"
|
|
|
+a="1"
|
|
|
+b="0"
|
|
|
+zfs destroy -r testpool
|
|
|
+sleep 3
|
|
|
+while [ $b -lt 1 ]
|
|
|
+do
|
|
|
+ #mbuffer -L -Q -p 90 -s 8388608 -m 6G -i /dev/nst0 -l mbuftmp.tmp | zfs receive -F testpool/test-t1$a
|
|
|
+ mbuffer -L -Q -p 90 -s 8388608 -m 6G -i /dev/nst1 -l mbuftmp.tmp | zfs receive -F testpool/test-t2$a
|
|
|
+ #dd if=/dev/nst0 bs=8388608 status=progress | zfs receive -F testpool/test$a
|
|
|
+ #dd if=/dev/nst1 bs=8M status=progress | zfs receive -F testpool/testt$a
|
|
|
+ if [[ $? != 0 ]]; then
|
|
|
+ a=$[$a-1]
|
|
|
+ echo "No more snapshots on tape latest was $a"
|
|
|
+ b="1"
|
|
|
+ else
|
|
|
+ echo "snapshot $a received"
|
|
|
+ a=$[$a+1]
|
|
|
+ fi
|
|
|
+done
|
|
|
+}
|
|
|
+
|
|
|
+echo "Start fule backup to tape @ $(date)" >> $logfile
|
|
|
+ echo "running 7 week Backup @ $(date)" >> $logfile
|
|
|
+ IFS=":"
|
|
|
+ read ioslot num_tape num_tape2<<<"$(choustape 1)"
|
|
|
+ Rshot="Raid10_pool/Users"
|
|
|
+ prepair
|
|
|
+ writetotape 0
|
|
|
+ shots=$?
|
|
|
+ CloneTape $shots
|
|
|
+ ejec $num_tape $ioslot
|
|
|
+ IFS=":"
|
|
|
+ read ioslot num_tape num_tape2<<<"$(choustape 2)"
|
|
|
+ Rshot="Raid10_pool/System"
|
|
|
+ prepair
|
|
|
+ writetotape 0
|
|
|
+ shots=$?
|
|
|
+ Rshot="Raid10_pool/var"
|
|
|
+ writetotape $shots
|
|
|
+ shots=$?
|
|
|
+ CloneTape $shots
|
|
|
+ ejec $num_tape $ioslot
|
|
|
+ IFS=":"
|
|
|
+ read ioslot num_tape num_tape2<<<"$(choustape 3)"
|
|
|
+ Rserver="root@10.0.4.2"
|
|
|
+ Rshot="BIG_pool/Media"
|
|
|
+ prepair
|
|
|
+ writetotape 0
|
|
|
+ shots=$?
|
|
|
+ CloneTape $shots
|
|
|
+ ejec $num_tape $ioslot
|
|
|
+echo "finished fule backup to tape @ $(date)" >> $logfile
|
|
|
+
|
|
|
+echo "-----------------------------------------------------" >> $logfile
|
|
|
+echo " " >> $logfile
|
|
|
+echo " " >> $logfile
|
|
|
+#rm mbuftmp.tmp
|
|
|
+killall mbuffer -q
|
|
|
+wait
|
|
|
+# recover to single tape drive....: dd if=/dev/st0 bs=8M | zfs receive -F testpool/test2
|