Einzelnen Beitrag anzeigen
Alt 06.02.2011, 00:47   #13
Networking Homer
Neuling
Punkte: 17, Level: 1 Punkte: 17, Level: 1 Punkte: 17, Level: 1
Levelaufstieg: 33% Levelaufstieg: 33% Levelaufstieg: 33%
Aktivität: 25,0% Aktivität: 25,0% Aktivität: 25,0%
 
Benutzerbild von Networking Homer
 
Registriert seit: 06.02.2011
Beitr?ge: 1
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Downloads: 0
Uploads: 0
Nachrichten: 0
Renommee-Modifikator:
0 Networking Homer befindet sich auf einem aufstrebenden Ast
Standard

Das Script von Zero111 finde ich super und ich habe es weiterentwickelt. Meine Version hat folgende Features:

- Verzeichnis- und Dateisicherung via zip
- Backup von 6 DBs
- 2 FTP-Verbindungen via lftp
- FTP 1 soll via TLS verschlüsselt sein (Hinweise dazu im Script)
- FTP 2 darf unverschlüsselt sein, ZIP wird aber automatisch mit ccrypt verschlüsselt
- Via FTP werden OLD-Dateien des alten Backups erstellt. Die letzte OLD-Datei wird automatisch gelöscht
- Der Backup-Dateiname bleibt bei mir gleich (keine Datumsanpassung)
- SQL-Dump verarbeitet auch große Tables (>300)

Vielen Dank an dieser Stelle an Zero111 für die tolle Inspiration!

Nun zum Script:

Code:
##!/bin/sh
# ccrypt und lftp erforderlich (apt-get install ...)

###################################################################################
# Zu sichernde Verzeichnisse und Dateien bestimmen.                               #	
# Beispiel Verzeichnisangabe: /var/www/sichermich/                                #
# Beispiel-Zip-File-Angabe: sichermich.zip                                        #
# Zip-Option (z.B. -r f¸r Unterverzeichnisse) wahlen                              #
# commandX: Raute vorsetzen, wenn nicht genutzt! Vermeidet komische ".Zip"-Files! #
###################################################################################

# Die Meldung wie ./backupscript.txt: line 231: /var/www/ zips/: is a directory" sind normal,
# wenn nicht alle 10 Verzeichnisvariablen (VZ1-10) besetzt sind.


VZ1="/var/www/vhosts/sichermich/"
zip1="sichermich.zip"
zipopt1="-r"
command1="zip"

VZ2=""
zip2=""
zipopt2=""
#command2="zip"

VZ3=""
zip3=""
zipopt3=""
#command3="zip"

VZ4=""
zip4=""
zipopt4=""
#command4="zip"

VZ5=""
zip5=""
zipopt5=""
#command5="zip"

VZ6=""
zip6=""
zipopt6=""
#command6="zip"

VZ7=""
zip7=""
zipopt7=""
#command7="zip"

VZ8=""
zip8=""
zipopt8=""
#command8="zip"

VZ9=""
zip9=""
zipopt9=""
#command9="zip"

VZ10=""
zip10=""
zipopt10=""
#command10="zip"


############################################################################
# Speicherorte fur Dateien/Verzeichnisse, Datenbanke und Backupfile        #
############################################################################

# Name der Backup-Datei
BACKUP_FILE="Backup.zip"


# temporaerer Speicherort des Backup-Archivs
BACKUP_TMP="/var/www/tempzip/"

# kompletter Pfad zum Backup
BACKUP=${BACKUP_TMP}${BACKUP_FILE}

# Temporarer Speicherort der Verzeichnisse und Dateien sowie die DBs
BACKUP_DATA="/var/www/zips/"

# Passwort f¸r ccrypt-Datei
ccr="passwort"

###########################################################################
# Datum initialisieren                                                    #
###########################################################################

DATUM=`date '+%d.%m.%Y'`

############################################################################
# FTP-Daten: (1) mit TLS (2) ohne TLS aber dafür mit ccrypt-Verschlusselung#
############################################################################

# Host TLS (1) TLS notwendig, da ansonsten ein unverschlüsseltes ZIP ubertragen wird.
# TLS muss in der /etc/lftp.conf und an der Gegenstelle eingerichtet sein.

FTP_SERVER=""
FTP_PORT="21"
FTP_USER=""
FTP_PASSWORT=""


# Host ohne TLS (2), ZIP wird dafür mit ccrypt verschlüsselt
FTP_SERVER2=""
FTP_PORT2="21"
FTP_USER2=""
FTP_PASSWORT2=""

############################################################################
# Info zur Aktivierung von TLS in lftp (/etc/lftp.conf)                    #
############################################################################

#TLS-Aktivierung f¸r /etc/lftp.conf:

#set ftp:ssl-allow true
##set ftp:ssl-force true
#set ftp:ssl-protect-data true
#set ftp:ssl-protect-list true

############################################################################
# Datenbank-Daten (User, DB-Name, Passwort) fur 6 Datenbanke               #
############################################################################


# Host 
DB_HOST="localhost"

#### Datenbank 1 #############################

# User
DB_USER_1=""

# Passwort
DB_PASSWORT_1=""

# Name
DB_NAME_1=""

#### Datenbank 2 ##############################

# User
DB_USER_2=""

# Passwort
DB_PASSWORT_2=""

# Name
DB_NAME_2=""

#### Datenbank 3 ##############################

# User
DB_USER_3=""

# Passwort
DB_PASSWORT_3=""

# Name
DB_NAME_3=""

#### Datenbank 4 ###############################

# User
DB_USER_4=""

# Passwort
DB_PASSWORT_4=""

# Name
DB_NAME_4=""

#### Datenbank 5 ###############################

# User
DB_USER_5=""

# Passwort
DB_PASSWORT_5=""

# Name
DB_NAME_5=""

###############################################
#### Datenbank 6 ####

# User
DB_USER_6=""

# Passwort
DB_PASSWORT_6=""

# Name
DB_NAME_6=""

#################################################
#####                                       #####
#####   Sicherung der Ordner und Dateien    #####
#####                                       #####
#################################################
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Die Dateien und Verzeichnisse werden gezippt."

CD  ${VZ1}
${command1} ${zipopt1} ${BACKUP_DATA}${zip1} *

CD  ${VZ2}
${command2} ${zipopt2} ${BACKUP_DATA}${zip2} *

CD  ${VZ3}
${command3} ${zipopt3} ${BACKUP_DATA}${zip3} *

CD  ${VZ4}
${command4} ${zipopt4} ${BACKUP_DATA}${zip4} *

CD  ${VZ5}
${command5} ${zipopt5} ${BACKUP_DATA}${zip5} *

CD  ${VZ6}
${command6} ${zipopt6} ${BACKUP_DATA}${zip6} *

CD  ${VZ7}
${command7} ${zipopt7} ${BACKUP_DATA}${zip7} *

CD  ${VZ8}
${command8} ${zipopt8} ${BACKUP_DATA}${zip8} *

CD  ${VZ9}
${command9} ${zipopt9} ${BACKUP_DATA}${zip9} *

CD  ${VZ10}
${command10} ${zipopt10} ${BACKUP_DATA}${zip10} *

#################################################
#####                                       #####
#####      Laufende Prozesse anhalten       #####
#####                                       #####
#################################################

# Apache Beenden
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Apache Webserver beenden"
/etc/init.d/apache2 stop



#################################################
#####                                       #####
#####   Sicherung der Datenbanken           #####
#####                                       #####
#################################################

DB_1="${DB_NAME_1}${DATUM}.gzip"
DB_2="${DB_NAME_2}${DATUM}.gzip"
DB_3="${DB_NAME_3}${DATUM}.gzip"
DB_4="${DB_NAME_4}${DATUM}.gzip"
DB_5="${DB_NAME_5}${DATUM}.gzip"
DB_6="${DB_NAME_6}${DATUM}.gzip"

# SQL-Datenbanke sichern
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Datenbank:${DB_NAME_1} sichern"
mysqldump --skip-lock-tables -h ${DB_HOST} -u${DB_USER_1} -p${DB_PASSWORT_1} ${DB_NAME_1} | gzip -9c > ${BACKUP_DATA}${DB_1}

echo "[`date '+%d.%m.%Y %H:%M:%S'`] Datenbank:${DB_NAME_2} sichern"
mysqldump -h ${DB_HOST} -u${DB_USER_2} -p${DB_PASSWORT_2} ${DB_NAME_2} | gzip -9c > ${BACKUP_DATA}${DB_2}

echo "[`date '+%d.%m.%Y %H:%M:%S'`] Datenbank:${DB_NAME_3} sichern"
mysqldump --skip-lock-tables -h ${DB_HOST} -u${DB_USER_3} -p${DB_PASSWORT_3} ${DB_NAME_3} | gzip -9c > ${BACKUP_DATA}${DB_3}


echo "[`date '+%d.%m.%Y %H:%M:%S'`] Datenbank:${DB_NAME_4} sichern"
mysqldump --skip-lock-tables -h ${DB_HOST} -u${DB_USER_4} -p${DB_PASSWORT_4} ${DB_NAME_4} | gzip -9c > ${BACKUP_DATA}${DB_4}


echo "[`date '+%d.%m.%Y %H:%M:%S'`] Datenbank:${DB_NAME_5} sichern"
mysqldump --skip-lock-tables -h ${DB_HOST} -u${DB_USER_5} -p${DB_PASSWORT_5} ${DB_NAME_5} | gzip -9c > ${BACKUP_DATA}${DB_5}


echo "[`date '+%d.%m.%Y %H:%M:%S'`] Datenbank:${DB_NAME_6} sichern"
mysqldump --skip-lock-tables -h ${DB_HOST} -u${DB_USER_6} -p${DB_PASSWORT_6} ${DB_NAME_6} | gzip -9c > ${BACKUP_DATA}${DB_6}


# Apache starten
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Apache Webserver starten"
/etc/init.d/apache2 start

############################################################################
# Backup.Zip erstellen, das via FTP hochgeladen wird                       #
############################################################################

echo "[`date '+%d.%m.%Y %H:%M:%S'`] Daten sammeln"
zip -r -q ${BACKUP} ${BACKUP_DATA}


############################################################################
# FTP 1  und 2: Alte .old loschen und neue .old auf FTP-Server erstellen.  #
############################################################################
#FTP 1: Losche alte OLD und benenne ZIP in OLD um.

echo "[`date '+%d.%m.%Y %H:%M:%S'`] lftp Steuerdatei fur Umbenennung auf ${FTP_SERVER} erstellen"
touch /root/rename.ftp
echo "#rename.ftp" >> /root/rename.ftp
echo "open ${FTP_SERVER}:${FTP_PORT}" >> /root/rename.ftp
echo "user ${FTP_USER} ${FTP_PASSWORT}" >> /root/rename.ftp
echo "rm   ${BACKUP_FILE}.old" >> /root/rename.ftp
echo "mv   ${BACKUP_FILE} ${BACKUP_FILE}.old" >> /root/rename.ftp





echo "[`date '+%d.%m.%Y %H:%M:%S'`] Lösche alte OLD-Datei und erstelle eine Neue auf ${FTP_SERVER}"
lftp -f /root/rename.ftp
echo "[`date '+%d.%m.%Y %H:%M:%S'`] fertig auf ${FTP_SERVER}"

#############################################################################

#FTP 2: Losche alte OLD und benenne ZIP in OLD um.

echo "[`date '+%d.%m.%Y %H:%M:%S'`] lftp Steuerdatei fur Umbenennung auf ${FTP_SERVER2} erstellen"
touch /root/rename2.ftp
echo "#rename2.ftp" >> /root/rename2.ftp
echo "open ${FTP_SERVER2}:${FTP_PORT}" >> /root/rename2.ftp
echo "user ${FTP_USER2} ${FTP_PASSWORT2}" >> /root/rename2.ftp
echo "rm   ${BACKUP_FILE}.cpt.old" >> /root/rename.ftp
echo "mv   ${BACKUP_FILE}.cpt ${BACKUP_FILE}.cpt.old" >> /root/rename2.ftp





echo "[`date '+%d.%m.%Y %H:%M:%S'`] Lösche alte OLD-Datei und erstelle eine Neue auf ${FTP_SERVER}"
lftp -f /root/rename2.ftp
echo "[`date '+%d.%m.%Y %H:%M:%S'`] fertig auf ${FTP_SERVER}"




############################################################################
# Neue Zips per ftp hochladen.    (TLS und ZIP)                            #
############################################################################
# lftpt Steuerdatei erstellen (TLS)
echo "[`date '+%d.%m.%Y %H:%M:%S'`] lftp Steuerdatei erstellen TLS-ZIP"
touch /root/backup.ftp
echo "#backup.ftp" >> /root/backup.ftp
echo "open ${FTP_SERVER}:${FTP_PORT}" >> /root/backup.ftp
echo "user ${FTP_USER} ${FTP_PASSWORT}" >> /root/backup.ftp
echo "put  ${BACKUP}" >> /root/backup.ftp




# Backup Daten auf FTP uebertragen
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Backup auf FTP-Server ${FTP_SERVER} ¸bertragen"
lftp -f /root/backup.ftp

############################################################################
# Neue Zips per ftp hochladen.    (ohne TLS aber mit ccrypt)               #
############################################################################

CD  ${BACKUP_TMP}
ccrypt -e -K ${ccr} -f ${BACKUP}

# lftpt Steuerdatei erstellen (offen, aber cryptet)
echo "[`date '+%d.%m.%Y %H:%M:%S'`] lftp Steuerdatei erstellen f¸r CRYPT-‹bertragung"
touch /root/backup2.ftp
echo "#backup2.ftp" >> /root/backup2.ftp
echo "open ${FTP_SERVER2}:${FTP_PORT}" >> /root/backup2.ftp
echo "user ${FTP_USER2} ${FTP_PASSWORT2}" >> /root/backup2.ftp
echo "put  ${BACKUP}.cpt" >> /root/backup2.ftp



# Backup Daten auf FTP uebertragen
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Backup auf FTP Server ${FTP_SERVER2} ¸bertragen (ZIP, offen, CRYPz.cpt)"
lftp -f /root/backup2.ftp




#################################################
#####                                       #####
#####        Abschliessende Arbeiten        #####
#####                                       #####
#################################################

# Temporaere Daten loeschen
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Temporare Daten loschen"
rm  -f /root/*.ftp 

rm  -f ${BACKUP} ${BACKUP}.cpt

rm  -f ${BACKUP_DATA}${DB_1} ${BACKUP_DATA}${DB_2} ${BACKUP_DATA}${DB_3} ${BACKUP_DATA}${DB_4} ${BACKUP_DATA}${DB_5} ${BACKUP_DATA}${DB_6}

rm  -f ${BACKUP_DATA}*.*



### FERTIG ###
echo "[`date '+%d.%m.%Y %H:%M:%S'`] Fertig"
Angeh?ngte Dateien
Dateityp: txt backupscript.txt (10,9 KB, 2x aufgerufen)

Ge?ndert von Networking Homer (06.02.2011 um 00:54 Uhr)
Networking Homer ist offline   Mit Zitat antworten Nach oben