VMware: In einer virtuellen Maschine lässt sich mit der VMware Toolbox die Zeitsynchronisation ganz einfach mit einem kurzen Haken setzen. Leider gilt diese einfache Konfiguration der Zeitsynchronisation in der VMware nur für Windows Gastsysteme, oder Linux Systeme welche das X11 System nutzen. Fast alle meiner virtuellen Maschinen, welche ich unter VMware betreibe sind allerdings Linuxsysteme ohne X11 System.
Dennoch lässt sich hier die Zeitsynchronisation für die virtuelle Maschine aktivieren, sofern man weiß wie die aktuelle Einstellung ist. Mehr…
KategorienLinux, VMware, Windows & Co Tags: aktivieren, Bash, deaktivieren, kommandozeile, SHELL, sync, uhr, uhrzeit, virtuelle maschine, vm, VMware, vmware tools, windows, Zeit, zeitsynchronisation
Wenn man einen Linux basierten Server auf einen anderen sichern möchte, kann man dies relativ leicht per rsync erledigen. Leider kam es bei mir in der letzten Zeit häufiger mal vor, das ich nicht die Sicherung des letzten Tages brauchte, sondern eine die ein paar Tage zurück lag – was ich bei meiner Sicherung nicht vorgesehen hatte…
Aber man lernt ja nie aus und so schrieb ich das nachfolgende Script, mit welchem vom Zielserver aus der Quellserver gesichert wird und diese Sicherung in “Tagesverzeichnisse” ablegt, also eine Sicherung je Tag in ein gesondertes Verzeichnis.
Ein kleines Feedback per Mail an mich durfte natürlich auch nicht fehlen!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
| #!/bin/bash
# set +x
# ACHTUNG!!! DAS SCRIPT MUSS ALS ROOT LAUFEN!!!
# ACHTUNG!!! AUTHORIZED KEYS SIND ERFORDERLICH!!!!
##############################
# Variablendefinitionen
##############################
RECIPIENTS="maik@lnx-world.de"
HOST=$1
MAIL=/tmp/rsyncmail_$HOST
TMPLOG=/tmp/rsynclog_$HOST
LOGFILE=/var/log/rsync.log
NOW=`/bin/date`
DOW=`/bin/date +"%A"`
BACKUPSERVER=$1
BACKUPDIR=/
TARGETDIR=/var/backup/$HOST/$DOW/
E1=/proc
E2=/tmp
E3=/lost+found
OPTIONS="-az -e ssh --force --stats --numeric-ids --ignore-errors --delete-after --delete-excluded --exclude=$E1 --exclude=$E2 --exclude=$E3"
##############################
# Funktionsdefinitionen
##############################
make_mail()
{
printf "Subject: LNX-WORLD RSYNC REPORT for $HOST - $NOW\n" >> $MAIL
printf "#########################################\n" >> $MAIL
printf "# SCRIPTSTATUS: $SCRIPTSTATE\n" >> $MAIL
printf "#########################################\n" >> $MAIL
printf "\n\n" >> $MAIL
printf "#########################################\n" >> $MAIL
printf "# Script wurde mit folgenden Parametern gestartet:\n" >> $MAIL
printf "#########################################\n" >> $MAIL
printf "BACKUPSERVER = $BACKUPSERVER \n" >> $MAIL
printf "BACKUPDIR = $BACKUPDIR \n" >> $MAIL
printf "TARGETDIR = $TARGETDIR \n" >> $MAIL
printf "EXCLUDES = $E1 $E2 $E3 \n" >> $MAIL
printf "NOW = $NOW \n" >> $MAIL
printf "DOW = $DOW \n" >> $MAIL
printf "#########################################\n" >> $MAIL
printf "# RSYNC Output:\n" >> $MAIL
printf "#########################################\n" >> $MAIL
/bin/cat $TMPLOG >> $MAIL
}
do_rsync()
{
/usr/bin/rsync $OPTIONS $HOST:$BACKUPDIR $TARGETDIR >> $TMPLOG
RSYNCSTATE=$?
if [ $RSYNCSTATE -eq 0 ]; then
SCRIPTSTATE=OK
echo "$NOW JOB: $HOST erfolgreich gesynct" >> $LOGFILE
else
SCRIPTSTATE=ERROR
echo "$NOW JOB: $HOST NICHT erfolgreich gesynct" >> $LOGFILE
fi
}
check_directorys()
{
echo "$NOW JOB: $HOST Starte RSYNC Backup" >> $LOGFILE
if [ ! -d /var/backup ]
then
echo "$NOW JOB: $HOST ERROR - Backupdirectory nicht da! EXITING" >> $LOGFILE
exit 1
fi
if [ ! -d /var/backup/$HOST ]
then
mkdir /var/backup/$HOST
echo "$NOW JOB: $HOST /var/backup/$HOST/ angelegt" >> $LOGFILE
else
echo "$NOW JOB: $HOST /var/backup/$HOST/ ist schon da" >> $LOGFILE
fi
if [ ! -d /var/backup/$HOST/$DOW ]
then
mkdir /var/backup/$HOST/$DOW
echo "$NOW JOB: $HOST /var/backup/$HOST/$DOW angelegt" >> $LOGFILE
else
echo "$NOW JOB: $HOST /var/backup/$HOST/$DOW ist schon da" >> $LOGFILE
fi
}
# Zuerst einmal aufräumen!
/bin/rm $MAIL
/bin/rm $TMPLOG
check_directorys
do_rsync
make_mail
cat $MAIL | sendmail -r tagessicherung@lnx-world.de -t $RECIPIENTS |
Die “Features” des Scriptes sind also:
- Sicherung von Server A in ein Backupverzeichnis auf Server B
- 7 Sicherungen liegen auf Vorrat
- Verzeichnisse werden bei Bedarf vom Script selbst angelegt
- Der Backupprozess wird in ein Logfile geschrieben und dort erfasst
- Es wird am Ende des Backuplaufes eine Reportmail an einen (oder mehrere) E-Mailempfänger versendet
- Die Sicherung erfolgt über eine mit SSH verschlüsselte Verbindung
- Es werden keine Sicherungsagenten auf dem Quellserver benötigt
- Das Script kostet nichts und ist absolut frei verfügbar
P.S.
Wer mein kleines Script bei sich einsetzt schreibe mir bitte ein kleines Feedback als Kommentar, danke!
Desweiteren kann die Liste der obigen Excludes frei ergänzt werden, gerade bei Datenbanken wäre es sinnvoll hier die Datenverzeichnisse der Datenbanken zu excluden und vor dem Scriptlauf per Dump ein sauberes Sicherungsfile zu erstellen! Wenn die Excludes erweitert werden, tragt bitte die zusätzlichen E-Nummern auch in den $OPTIONS nach, sonst werden die nicht übernommen!
KategorienShell Scripts Tags: Backup, Bash, Linux, Maik, Röthlinger, Rsync, SHELL, Sicherung, SSH, Tagessicherung, Verschlüsselung
Seit neuestem ersparen ich mir den täglichen Login auf meine Linuxserver um nach Updates zu schauen. Ich lasse mich direkt von den Servern per Mail über anstehende Updates informieren!
Welche der drei von mir hier vorgestellten Möglichkeiten ich selbst benutze, hängt allein davon ab, wer informiert werden soll (ich selbst will natürlich immer alles wissen ;) )
Möglichkeit EINS:
Im leider geschlossenem Sysop Forum fand ich folgende Lösung, Welche eine schöne Mail verfasst, wenn denn Updates anliegen. In der Mail wird man noch informiert, welche Packageversionen aktuell installiert sind und welche Version in den eingetragenen Repositorys gefunden wurde.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #!/bin/bash
#
# (c)opyright 2005-2007 Thomas Lavis
#
clear
#
# Empfänger hier eingeben
#
eMailEmpfaenger="name@deinedomain.tld"
# Ausgabe für Script auf international setzen
TMPLANG=`echo $LANG`
LANG=C
if [[ `apt-get update 2>&1 | grep Get` ]] ; then
Updates=`apt-get -s dist-upgrade 2>&1 | grep Inst | wc -l`
if [ $Updates -ne 0 ] ; then
LANG=$TMPLANG
echo "Für die folgenden Pakete gibt es ein Update:" > aptnachricht
echo "" >> aptnachricht
echo "" >> aptnachricht
apt-get -s dist-upgrade | grep Inst | cut -c 6- >> aptnachricht
mutt -s "Ergebnis von aptcheck auf Server: `hostname`" $eMailEmpfaenger < aptnachricht
rm aptnachricht
fi
fi |
Möglichkeit ZWEI:
Ich weiß nicht mehr genau wo, aber folgende Lösung sendet einfach nur eine Mail wenn es Updates gibt, welche einen über die generelle Verfügbarkeit von Updates informiert, also keine weiteren Details zu den Packages enthält, welche zu updaten sind :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #!/bin/bash
EMAIL="root"
SUBJECT="[`hostname`] Update Hinweis"
MESSAGE="SYSTEMMELDUNG:\nAuf `hostname` sind neue Updates vorhanden"
# Dieses Script versendet eine eMail, sobald Online-Updates fuer das System
# verfuegbar sind. Das Script ist Public Domain, der Autor uebernimmt keine
# Haftung fuer das Script.
# Debian
apt-get update &>/dev/null
COUNT=`apt-get -s upgrade | grep -c "Inst"`
if [ $COUNT -gt 0 ]
then
echo -e "$MESSAGE" | mail -s "$SUBJECT" "$EMAIL"
fi |
Möglichkeit DREI:
Gefunden im Blog von Björn Böttcher - Einfach als Eintrag in die Crontab über nachfolgende Zeile via
crontab -e
und da:
1
| @daily aptitude update; aptitude -d -y dist-upgrade) | mail -s “Debian OS Updates -> `hostname`” deinname@deinedomain.tld |
Die einfachste Möglichkeit die ich bisher gefunden habe! Reicht in den meisten Fällen schon völlig aus und stellt auch die Puristen unter uns zufrieden!

Use the force - root
--- Updated on 12.12.2008 ---