Standardeditor beim Bearbeiten der Crontab ändern


In Ubuntu wird nano als Editor für Änderungen an der Crontab verwendet. Wenn man einen anderen Editor gewohnt ist, ist das recht nervig. Man kann dies aber einfach ändern:

Entweder man ändert diese Einstellung für jeden Nutzer extra durch einen Eintrag

export EDITOR=vim

in die Datei /home/USER/.bashrc des entsprechenden Nutzers oder man ändert das ganze gleich systemweit mit folgendem Befehl:

sudo update-alternatives --config editor

Backups aller MySQL-Datenbanken, Version 2

Kategorie Code 28.11.2007    Kategorie Code Code    Tags backup, bash, mysql    Kommentare 0 Kommentare

Ich habe das Skript, das in diesem Post beschrieben ist, überarbeitet. Nun macht es nicht nur Backups aller lokalen MySQL-Datenbanken, sondern löscht vorher auch alle Backups, die seit einer gewissen Anzahl an Tagen nicht mehr geändert wurden.
Vorteil: Im Backup-Verzeichnis liegt nun immer nur eine festgelegte Anzahl an Sicherungen. Das sieht dann z.B. so aus:

test@bheil-pc:~> ls /var/backups/sql/
insgesamt 28K
drwxr-xr-x 2 root root 4,0K 2007-11-22 06:03 2007.11.22
drwxr-xr-x 2 root root 4,0K 2007-11-23 06:03 2007.11.23
drwxr-xr-x 2 root root 4,0K 2007-11-24 06:03 2007.11.24
drwxr-xr-x 2 root root 4,0K 2007-11-25 06:03 2007.11.25
drwxr-xr-x 2 root root 4,0K 2007-11-26 06:03 2007.11.26
drwxr-xr-x 2 root root 4,0K 2007-11-27 06:03 2007.11.27
drwxr-xr-x 2 root root 4,0K 2007-11-28 15:27 2007.11.28

Man sieht also, es liegen generell immer Sicherungen der letzten 7 Tage bereit.

Hier nun das angepasst Skript:

#!/bin/bash

####################
# Das hier anpassen!
####################
# Das Sicherungsverzeichnis - hier landen alle Backups als 
# Unterverzeichnisse und nach Datum sortiert
# Achtung: Dieses Verzeichnis muss existieren und das
# Skript muss dort Schreibrechte besitzen!
SAVEDIR="/home/backup/sql"

# Anzahl der Sicherungen, sprich Tage - 6 steht fuer eine 
# Woche (7 Sicherungen, da die aktuelle nicht gezaehlt wird)
DAYSOLD="6"

# Temp-Verzeichnis (das Skript braucht dort Schreibrechte)
TMPDIR="/tmp"

# Root-Passwort zur MySQL-Datenbank
DBPWD="PASSWORT"

####################
# Ab hier i.d.R. keine Aenderung mehr noetig
####################

# Erzeuge Liste aller Datenbanken in $TMPDIR/dbaselist.txt
mysqlshow -u root -p$DBPWD | awk '{print $2}' | \
grep -v Databases | sort > $TMPDIR/dbaselist.txt

# Finde und loesche alles, was seit $DAYSOLD Tagen nicht 
# veraendert wurde
find $SAVEDIR -maxdepth 1 -mindepth 1 \
-mtime +$DAYSOLD -exec rm -rf {} \;

# Geh ins Sicherungsverzeichnis und lege ein Verzeichnis 
# des heutigen Datums an
cd $SAVEDIR
mkdir -p `date +%Y.%m.%d`
cd `date +%Y.%m.%d`

# Liste der Datenbanken durchgehen und Sicherung erstellen
for x in `cat /tmp/dbaselist.txt`; do
    mysqldump --opt -u root -p$DBPWD $x >$x.sql;
done;

# Aufraeumen
rm -f *.gz
rm -f /tmp/dbaselist.txt

# Alle Dateien zippen
gzip *