123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- #!/bin/bash
- clear
- LoclaIP="10.0.4.2"
- Rshot="Raid10_pool"
- RserverIP="10.0.4.2"
- 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/sg7"
- c="0"
- mkdir /mnt/NFSUsers ; mount 10.0.4.1:/mnt/bigpart/Users /mnt/NFSUsers
- rm $logfile
- #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=$?
- Rshot="BIG_pool/Media/Podcast"
- 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/Video"
- prepair
- writetotape 0
- shots=$?
- Rshot="BIG_pool/Media/Music"
- writetotape $shots
- 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
|