Automatisch Backups von Linux Server löschen

So hier ist mal ein kleines Bash Skript um automatisiert Backups zu löschen.

Es müssen natürlich alle Variablen angepasst werden, diese sollte ja selbsterklärend sein.


#!/bin/bash

# Allgemeine Variablen fr Logfiles
datum=`date +%Y_%0m_%0e`

ablauf_log="/share/log/ablauf-$datum.log"
error_log="/share/log/error-$datum.log"

# Maximales alter des Backupfiles in Tagen
alter="21"

echo Bereinigen wird gestartet $datum >>$ablauf_log
echo Bereinigen wird gestartet
echo ------------------------------------------------ >>$ablauf_log
echo ------------------------------------------------

# ---------------------------------- GESAMT BACKUP ROUTINE
ordner="/share/backup/sbs"
echo Variablen
echo Ordner wird auf $ordner gesetzt
echo Alter wird auf $alter gesetzt
echo
echo ------- $ordner -- Komplettsicherung aelter als $alter Tage >>$ablauf_log
echo Dateien in $ordner werden auf Alter ueberprueft  - max. $alter Tage

find $ordner -mtime +$alter -exec echo {} \;
find $ordner -mtime +$alter -exec rm {} \;

echo ------------------------------------------------

# ---------------------------------- WEBSERVER BACKUP ROUTINE
alter="15" # fuer webserve und lexware nur 15 Tage
ordner="/share/backup/webserver"

echo Neu setzen der Variablen
echo Ordner wird auf $ordner gesetzt
echo Alter wird auf $alter gesetzt
echo

echo ------- $ordner -- Webserversicherung aelter als $alter Tage >>$ablauf_log
echo Dateien in $ordner werden auf Alter ueberprueft  - max. $alter Tage

find $ordner -mtime +$alter -exec echo {} \;
find $ordner -mtime +$alter -exec rm {} \;

echo ------------------------------------------------

# ---------------------------------- LEXWARE BACKUP ROUTINE
# - Alter ist bereits definiert
# ---------------------------------------------------------
ordner="/share/backup/lexware"

echo Neu setzen der Variablen
echo Ordner wird auf $ordner gesetzt
echo Alter wird auf $alter gesetzt
echo

echo ------- $ordner -- Lexwaresicherung aelter als $alter Tage >>$ablauf_log
echo Dateien in $ordner werden auf Alter ueberprueft  - max. $alter Tage

find $ordner -mtime +$alter -exec echo {} \;
find $ordner -mtime +$alter -exec rm {} \;

echo ------------------------------------------------
echo
echo ------------------------------------------------ >>$ablauf_log
echo Vorgang abgeschlossen >>$ablauf_log


Getestet mit SUSE / DEBIAN / UBUNTU

Automatisches Backup erstellen - Linux

Was natürlich nicht fehlen darf, ist ein Skript um Backups zu erstellen.

Hier wird z.B. ein lampp Server gesichert, es kann natürlich alles damit gesichert werden, dann muss nur das Skript angepasst werden ;-)

Ist vielleicht nicht immer die sauberste Methode aber sie funktioniert


#!/bin/bash
#
#
# Sichert den eingestellten Ordner
#
# -- Variablen
#
# Ordner und Zieldatei
#
Ordner=/opt/lampp/htdocs
Target=/share/backup/webserver
tmp_temp=/opt/lampp/htdocs/xtc/templates_c/*.php
tmp_cach=/opt/lampp/htdocs/xtc/cache/*.html
Error=/share/log/`date +%Y_%0m_%0e`_Error_WebSRV.log
Ablauf=/share/log/`date +%Y_%0m_%0e`_Ablauf_WebSRV.log
# Stufe der Komprimierung (0-9)
Compression=9
#
# Name der Backup Datei
#
NameZIP=`date +%Y_%0m_%0e`_WEBSRV
#
# Startzeit ermitteln
#
StrTime=`date +%R`
#
#
# wenn kein Logfile mitgeschrieben werden soll
# umleiten in //dev/null
#
echo Backup wird gestartet $StrTime
echo LAMPP wird beendet

/opt/lampp/lampp stop >>$Ablauf 2>>$Error

echo Daten werden gesammelt und gezippt
zip -r -$Compression $Target/$NameZIP.zip $Ordner >>//dev/null 2>>$Error

echo temp Dateien werden entfernt
echo
rm $tmp_temp >>$Ablauf 2>>$Error
rm $tmp_cach >>$Ablauf 2>>$Error

echo LAMPP wird gestartet
/opt/lampp/lampp start >>$Ablauf 2>>$Error

echo Rechte auf Backupdatei werden geaendert
chmod 777 $Target/$NameZIP.zip

echo Backup abgeschlossen



Getestet mit SUSE / DEBIAN / UBUNTU

Cronjob | Linux

Cronjobs sind unersätzlich auf einem Linux Server, und sind das gegenstück zu geplanten Tasks bei Windows Servern.

Allerdings ist die Syntax bei einem Linux Server um einiges schwerer zu erlernen als das Microsoft Gegenstück.

Die eingerichteten Cronjobs kann man mit dem Befehl

crontab -l


ansehen. Meine Empfehlung an euch ist alle Jobs in einer Datei einzupflegen und diese dann mit

crontab eureDatei (z.B. crontab jobs.cron)


scharf zu schalten.

Der Aufbau eines Cronjobs besteht aus sechs Feldern.

1.Minute (0-59)
2.Stunde (0-23)
3.Tag im Monat (1-31)
4.Monat im Jahr (1-12)
5.Tag der Woche (0-6 mit 0=Sonntag)
6.Was soll ausgeführt werden (z.B. Skript)


Möchte man jetzt das jeden Montag um 5.00 Uhr das Skript Backup.sh ausgeführt wird sieht das so aus.

0 5 \* \* 1 /Skripte/Backup.sh


soll das Skript am 10ten und am 20ten jeden Monats ausgeführt werden sieht das so aus.

0 5 10,20 \* \* /Skripte/Backup.sh


will man das das Skript alle 2 Minuten ausgeführt wird muss man schon etwas wühlen um den genauen Syntax zu erfahren. Hier ist ein Beispiel.

-*/2 \* \* \* \* /Skripte/Backup.sh

Hier noch zwei Seiten die sich mit dem Thema etwas genauer befassen :

http://www.tech-geeks.org/contrib/mdrone/cron&crontab-howto.htm
http://www.sequenz.ch/archive/2003/12/07/crontab-beispiel.html

Und nun wünsch ich euch viel Spaß beim probieren
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)