123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- #!/bin/bash
- clear
- LoclaIP="10.0.4.2"
- Rshot="Raid10_pool"
- RserverIP="10.0.4.1"
- Rserver="root@$RserverIP"
- Ldest="testpool/test"
- logfile="/mnt/NFSUsers/thierry423/$0.log"
- loadedtape="/mnt/NFSUsers/thierry423/loadedtape.cnf"
- testfile="/mnt/NFSUsers/thierry423/latest-p_run.log"
- loaderdev="/dev/sg10"
- c="0"
- mkdir /mnt/NFSUsers ; RserverIP="10.0.4.1" ; 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
- }
- if [[ $1 = 1 ]]; then
- 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
- fi
- if [[ $1 = 2 ]]; then
- IFS=":"
- read ioslot num_tape num_tape2<<<"$(choustape $2)"
- prepair
- Writetozpool
- ejec $num_tape $num_tape2
- 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 -q
- killall dd -q
- tape="$(choustape $2)"
- num_tape=$?
- prepair
- writetotape
- prepair
- # Writetozpool
- ejec $num_tape
- fi
- if [[ $1 = 5 ]]; then
- echo "Load current Backuptapes one,tow or tree"
- killall mbuffer -q
- killall dd -q
- IFS=":"
- read ioslot num_tape num_tape2<<<"$(choustape $2)"
- echo "ioslot form 5 =: " $ioslot
- echo "num_tape1 form 5 =: " $num_tape
- echo "num_tape2 form 5 =: " $num_tape2
- prepair
- read -p "Press any key to unload backuptapes tapes... " -n1 -s
- echo " "
- ejec $num_tape $ioslot
- fi
- if [[ $1 = 9 ]]; then
- echo "load non backuptapes 1 4, 7 is clean-tape"
- mtx -f $loaderdev load 1 0
- mtx -f $loaderdev load 4 1
- read -p "Press any key to unload non backuptapes tapes... " -n1 -s
- mtx -f $loaderdev unload 1 0
- mtx -f $loaderdev unload 4 1
- fi
- 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
|