|
Wednesday, 04 August 2010 09:11 |
// description of your code here
#!/bin/sh
#
# Dies ist ein einfaches BackupScript welches
# Datenbanken und Ordner synchronisiert und
# das mittels SSH (AuthKey) und rsync.
#
# Name: SSHBackup
# Version: 1.2 (02.08.2010)
# Copyright: 2008-2010 by sp3x, www.sp3x.de
# _____
# ___ _ __|___ /_ __
# / __| '_ \ |_ \ \/ /
# \__ \ |_) |__) > <
# |___/ .__/____/_/\_\
# (c)|_| www.sp3x.de
#
#################
# KONFIGURATION #
#################
#
# Workingdir
#
WDIR="/root/backup/"
#
# Database-Backup History in Days
#
HISTORY=7
#
# Remote IP
#
HOST="localhost"
#
# MySQL-Datenbanken sichern?
# 1 = ja, 0 = nein
#
MYSQL=1
#
# Dateien sichern?
# 1 = ja, 0 = nein
#
FILESYSTEM=1
#
# MySQL-Datenbank Benutzer
#
MYSQL_USR="root"
#
# MySQL-Datenbank Password
#
MYSQL_PWD=""
#
# MySQL-Port
#
MYSQL_PORT=3306
#
# SSH-Port
#
SSH_PORT=9990
#
# SSH-Auth Key (default: ssh/key)
#
SSH_KEY="ssh/key"
#
# SSH-User (default: root)
#
SSH_USER="root"
#
# Maximale Geschwindigkeit in KByte/s
#
SPEED=99999
######################
# KONFIGURATION ENDE #
#####################Ã#
# Text formatiert in Konsole ausgeben
function cout() {
if [ "$2" = "" ]; then
MSG=$1
else
MSG="\033\13301;$2m$1\033\1330m"
fi
if [ "$3" = "1" ]; then
MSG="$MSG\a"
fi
echo -e -n "$MSG"
}
# Commando remote ausfuehren
function scmd() {
ssh -q $HOST -p$SSH_PORT -l$SSH_USER -i $SSH_KEY $1 $2 $3 $4 $5 $6 $7 $8 $9
}
#################################
# Backupvorgang vorbereiten
# und starten
cout "\n\tStarting backup... "
cd $WDIR
set $(date)
DATE=`date "+%Y-%m-%d_%H-%M"`
let deathline=`date "+%Y%m%d"`-$HISTORY+1
deathline=$deathline"0000"
#################################
# Alte Backups löschen
#
for dir in `ls ./DATABASE/`; do
cleandir=`echo $dir |sed s/_// |sed s/-// |sed s/-// |sed s/-//`
if [ $cleandir -lt $deathline ]; then
rm -Rf ./DATABASE/$dir
fi
done
#################################
# MYSQL - Backup
if [ "$MYSQL" = "1" ]; then
cout "\n\n\t\tStarting MySQL backup... "
# Backupscript erstellen
SCRIPT=`cat tpl/mysql`
sed -e "s/{MYSQL_USR}/$MYSQL_USR/" tpl/mysql > tmp.1
sed -e "s/{MYSQL_PWD}/$MYSQL_PWD/" tmp.1 > tmp.2
sed -e "s/{MYSQL_PORT}/$MYSQL_PORT/" tmp.2 > tmp.3
chmod +x tmp.3
scmd rm ~/tmp.dbbackup.sh 2> /dev/null
scp -P$SSH_PORT -i $SSH_KEY tmp.3 $SSH_USER@$HOST:~/tmp.dbbackup.sh 1> /dev/null
rm tmp.*
# Datenbank backup
scmd ~/tmp.dbbackup.sh
# Datenbankbackups synchronisieren
rsync -a -z -e "ssh -q -i$SSH_KEY -p$SSH_PORT" --bwlimit=$SPEED --stats "$SSH_USER@$HOST:/root/tmp.database/" ./DATABASE/ > log/${DATE}_database.log
# Datenbankordner loeoeschen
scmd rm -R ~/tmp.database
cout "\tDone" 32
fi
#################################
# FILESYSTEM - Backup
if [ "$FILESYSTEM" = "1" ]; then
cout "\n\t\tStarting Files backup... "
for x in `cat rpath.conf`; do
IFS=":"
data=($x)
mkdir FILE/${data[1]} 2> /dev/null
rsync -a -z -e "ssh -i$SSH_KEY -p9990" --bwlimit=$SPEED --stats --delete "$SSH_USER@$HOST:${data[0]}/" FILE/${data[1]}/ > log/${DATE}_file.log
done;
cout "\tDone" 32
fi
cout "\n\n\n\tFinished backup!\n\n" 32
 Read more: |