Browse Source

Upload files to ''

Thierry Reijnhout 4 years ago
parent
commit
e15a022743
1 changed files with 185 additions and 0 deletions
  1. 185 0
      PToTape-1.0.0.sh

+ 185 - 0
PToTape-1.0.0.sh

@@ -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