From fdc7d0dc87486d74a323c898cd191369ad988107 Mon Sep 17 00:00:00 2001 From: Deon George Date: Fri, 24 Jan 2014 23:27:55 +1100 Subject: [PATCH] Added openafs --- scripts/tdp.krb5.sh | 2 +- scripts/tdp.mysql.restore.sh | 9 +-- scripts/tdp.openafs.restore.sh | 73 ++++++++++++++++++++ scripts/tdp.openafs.sh | 121 +++++++++++++++++++++++++++++++++ scripts/tdp.openldap.sh | 4 +- 5 files changed, 199 insertions(+), 10 deletions(-) create mode 100755 scripts/tdp.openafs.restore.sh create mode 100755 scripts/tdp.openafs.sh diff --git a/scripts/tdp.krb5.sh b/scripts/tdp.krb5.sh index 29177fe..4af3f2f 100755 --- a/scripts/tdp.krb5.sh +++ b/scripts/tdp.krb5.sh @@ -59,4 +59,4 @@ size=$(getsize); [ -n "$DEBUG" ] && echo "Processing Kerberous, with size ($size)" # Backup to TSM -kdb5_util dump| tsmpipe -Bcs ${FILESPACE} -f FULL -l ${size} ${TSMPIPE_ARGS} +/usr/sbin/kdb5_util dump| tsmpipe -Bcs ${FILESPACE} -f FULL -l ${size} ${TSMPIPE_ARGS} diff --git a/scripts/tdp.mysql.restore.sh b/scripts/tdp.mysql.restore.sh index adf0070..a0e630d 100755 --- a/scripts/tdp.mysql.restore.sh +++ b/scripts/tdp.mysql.restore.sh @@ -21,25 +21,19 @@ # Copyright (c) 2012-2013 by Deon George # Check our arguments -while getopts ":DF:m:p:P:s:u:" opt; do +while getopts ":DF:p:P:u:" opt; do case $opt in D) DEBUG=1 ;; # Filespace to store in TSM F) FILESPACE=$OPTARG ;; - # Optional MYSQL arguments - m) MYSQL_ARGS=$OPTARG ;; - # Mysql PASSWORD p) DBPASS=$OPTARG ;; # PITDATE to restore P) PITDATE=$OPTARG ;; - # Skip DBs - s) SKIP_DB=$OPTARG ;; - # Mysql USERNAME u) DBUSER=$OPTARG ;; @@ -54,6 +48,7 @@ while getopts ":DF:m:p:P:s:u:" opt; do ;; esac done +shift $(( $OPTIND -1 )) # Our defaults DB=${@:?"You need to specicify a database to restore"} diff --git a/scripts/tdp.openafs.restore.sh b/scripts/tdp.openafs.restore.sh new file mode 100755 index 0000000..620c0c9 --- /dev/null +++ b/scripts/tdp.openafs.restore.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# Copyright (c) 2012-2013 by Deon George + +# Check our arguments +while getopts ":DFh::p:P:r:v:" opt; do + case $opt in + D) DEBUG=1 ;; + + # Filespace to store in TSM + F) FILESPACE=$OPTARG ;; + + # Host + h) HOST=$OPTARG ;; + + # Volume to restore to + p) PARTITION=$OPTARG ;; + + # PITDATE to restore + P) PITDATE=$OPTARG ;; + + # Rename Volume + r) RENAME=$OPTARG ;; + + # Vos arguements + v) VOS_ARGS=$OPTARG ;; + + # Error Checking + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done +shift $(( $OPTIND -1 )) + +# Our defaults +PARTIION=${PARTITION:?"You need to specicify a partition to restore to"} +DB=${@:?"You need to specicify a database to restore"} + +FILESPACE=${FILESPACE:-"/afsdump"} +HOST=${HOST:-"localhost"} +RENAME=${RENAME:-$DB} + +# TSMPIPE ARGUMENTS +[ -n "$PITDATE" ] && TSMPIPE_ARGS="${TSMPIPE_ARGS} -P ${PITDATE}" + +[ -n "$DEBUG" ] && echo "Processing DB ($DB) restoring to (${PARTITION}) with name (${RENAME})" + +# Restore from TSM +echo "tsmpipe -Bxs ${FILESPACE} -f ${DB}.FULL ${TSMPIPE_ARGS} | vos restore ${HOST} ${PARTITION} ${RENAME} ${VOS_ARGS}" diff --git a/scripts/tdp.openafs.sh b/scripts/tdp.openafs.sh new file mode 100755 index 0000000..d5e32a1 --- /dev/null +++ b/scripts/tdp.openafs.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# Copyright (c) 2012-2013 by Deon George + +# Check our arguments +while getopts ":DF:M:s:v:U" opt; do + case $opt in + D) DEBUG=1 ;; + + # Filespace to store in TSM + F) FILESPACE=$OPTARG ;; + + # Digest to use + M) DIGEST=$OPTARG ;; + + # Skip VOLs + s) SKIP_VOL=$OPTARG ;; + + # Only process updates + U) UPDATE_ONLY=1 ;; + + # Just backup this Vol + v) VOL=$OPTARG ;; + + # Error Checking + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done + +# Our defaults +FILESPACE=${FILESPACE:-"/afsdump"} +LASTDB=/var/tmp/tdp.afs.txt + +# List our Databases +function list() { + /usr/sbin/vos listvol localhost -localauth -quiet |awk '{print $1}' +} + +# Get Size +function getsize() { + echo 1024*$(/usr/sbin/vos examine -format -localauth $1|grep diskused | awk '{print $2}')|bc +} + +# Last Change +function getlast() { + /usr/sbin/vos examine -format -localauth $1|grep updateDate | awk '{print $2}' +} + +# TSMPIPE ARGUMENTS +[ -n "$DIGEST" ] && TSMPIPE_ARGS="${TSMPIPE_ARGS} -m ${DIGEST}" + +# Make sure we have BC +type bc > /dev/null 2>&1 +if [ $? -gt 0 ]; then + echo 'Need BC' && exit 1 +fi + +list | while read db; do + [ -n "$VOL" -a "$db" != "$VOL" ] && continue; + + SKIP=0 + if [ -n "$SKIP_VOL" ]; then + OLDIFS=$IFS + IFS=":" + for x in $SKIP_VOL ; do + [ $x == $db ] && SKIP=1 && break + done + IFS=$OLDIFS + fi + + # We need to skip this VOL + [ "$SKIP" -eq 1 ] && continue; + + size=$(getsize $db); + last=$(getlast $db) + + [ -n "$DEBUG" ] && echo "Processing VOL ($db), with size ($size), last updated ($last)" + + # Backup to TSM + if [ -n "$UPDATE_ONLY" ]; then + if [ -w $LASTDB ]; then + last_backup=$(cat $LASTDB|grep -e "\ $db\$" | awk '{print $1}') + [ -n "$DEBUG" ] && echo "Last backed up ($last_backup)" + [ $last -eq $last_backup ] && continue + fi + fi + + /usr/sbin/vos dump -localauth $db 2>/dev/null| tsmpipe -Bcs ${FILESPACE} -f ${db}.FULL -l ${size} ${TSMPIPE_ARGS} + [ ! -e $LASTDB ] && touch $LASTDB + + if grep -qe "\ ${db}\$" $LASTDB; then + sed -ie "s/^\([0-9]\+\)\ $db\$/$last $db/" $LASTDB + else + echo $last $db >> $LASTDB + fi +done; diff --git a/scripts/tdp.openldap.sh b/scripts/tdp.openldap.sh index c79c7d1..301d1b4 100755 --- a/scripts/tdp.openldap.sh +++ b/scripts/tdp.openldap.sh @@ -48,7 +48,7 @@ FILESPACE=${FILESPACE:-"/ldapdump"} # Get Size function getsize() { - slapcat | wc -c + /usr/sbin/slapcat | wc -c } # TSMPIPE ARGUMENTS @@ -59,4 +59,4 @@ size=$(getsize); [ -n "$DEBUG" ] && echo "Processing OpenLDAP, with size ($size)" # Backup to TSM -slapcat | tsmpipe -Bcs ${FILESPACE} -f FULL -l ${size} ${TSMPIPE_ARGS} +/usr/sbin/slapcat | tsmpipe -Bcs ${FILESPACE} -f FULL -l ${size} ${TSMPIPE_ARGS}