Backup erstellen
Ein Backup mit rsync und mysqldump erstellen
Dateien rekursiv mit rsync sichern
auf demselben host
Der folgende Befehl kopiert den Inhalt des Verzeichnisses „Linux“ (das Verzeichnis selbst nicht) und den Inhalt aller Unterverzeichnisse rekursiv in den Ordner „rsync“.
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync
auf einen externen host
Der folgende Befehl funktioniert wie oben, nur dass das Zielverzeichnis auf einem externen host liegt. Zugang zum externen Host muss möglich sein.
rsync -av /home/test/Desktop/Linux 192.168.56.100:/home/test/Desktop/rsync
Ist der Zugriff auf den externen Host per Passwort geschützt und/oder es soll ein bestimmter User verwendet werden, dann muss der Aufruf wie folgt aussehen. Nach dem Ausführen des Befehls wird eventuell das Passwort verlangt.
rsync -av /home/test/Desktop/Linux username@192.168.56.100:/home/test/Desktop/rsync
Verzeichnisse ausschließen
um bestimmte Verzeichnisse auszuschließen kann der Befehl wie folgt ergänz werden
--exclude 'verzeichnisname'
Es können auch mehrere Ausschlüsse mit Leerzeichen verkettet werden
--exclude 'verzeichnisname' --exclude 'verzeichnisname-2' --exclude 'verzeichnisname-3'
Die Ausschlüsse werden mit Leerzeichen an das „-av“ angefügt
rsync -av --exclude 'verzeichnisname' /home/test/Desktop/Linux username@192.168.56.100:/home/test/Desktop/rsync
In der Quelle NICHT vorhandene Dateien im Zielverzeichnis löschen
Um eine 100% konsistente Sicherung zu erhalten, wird mit dem Zusatz “ –delete“ dafür gesorgt, dass alle Dateien und Verzeichnisse, die in der Quelle NICHT vorhanden sind, im Zielverzeichnis gelöscht werden.
rsync -av --delete --exclude 'verzeichnisname' /home/test/Desktop/Linux username@192.168.56.100:/home/test/Desktop/rsync
Auf diese Weise ist sichergestellt, dass kein alter „Datenmüll“ übrig bleibt, der eventuell zu Problemen führen könnte.
Datenbank Sicherung erstellen
https://www.amargo.de/wissensdatenbank/mysql-befehle-auf-der-konsole-ausfuehren/
Beispiel Script für ein Backup
#!/bin/sh # Script soll nur laufen, wenn bestätigt wurde, dass der SHOP im Wartungsmodus ist read -p "Haben Sie den Wartungsmodus des SHOPs eingeschaltet? (ja/nein):" einaus if [ $einaus == "ja" ] then echo "Wartungsmodus ist eingeschaltet" else echo "Fehler: Bitte den Wartungsmodus einschalten, BEVOR Sie das Script starten" exit 0 fi # Script soll nur laufen, wenn bestätigt wurde, dass die Live-Datenbank im Profihost Backend kopiert wurde read -p "Haben Sie die Live-Datenbank des SHOPs im Profihost Backend kopiert? (ja/nein):" kopiert if [ $kopiert == "ja" ] then echo "Live-Datenbank wurde im Profihost Backend kopiert" else echo "Fehler: Bitte erstellen Sie eine Kopie der Live-Datenbank, BEVOR Sie das Script starten" exit 0 fi # Backup der Files der Liveumgebung erstellen (Verzeichnis "testumgebungen/" ausschließen) # alle Dateien, die im Quellverzeichnis NICHT vorhanden sind, werden im Zielverzeichnis gelöscht # dies ist wichtig, um eine konsistente Sicherung zu haben, die wir problemlos zurückspielen können date +"%d.%m.%Y %T" echo "Dateien kopieren: Start" rsync -arv --delete --exclude 'testumgebungen' /home/vhost/www.xyz.de /home/vhost/_backup/www.xyz.de date +"%d.%m.%Y %T" echo "Dateien kopieren: Ende" # Backup der Datenbank erstellen date +"%d.%m.%Y %T" echo "Datenbank sichern: Start" mysqldump -u username -p databasename > /home/vhost/_backup/databasename.sql date +"%d.%m.%Y %T" echo "Datenbank sichern: Ende" echo echo "Bitte den Wartungsmodus im Livesystem wieder ausschalten !"
Beispiel Script für ein Rollback
#!/bin/sh # Script soll nur laufen, wenn bestätigt wurde, dass der SHOP im Wartungsmodus ist read -p "Haben Sie den Wartungsmodus des SHOPs eingeschaltet? (ja/nein):" einaus if [ $einaus == "ja" ] then echo "Wartungsmodus ist eingeschaltet" else echo "Fehler: Bitte den Wartungsmodus einschalten, BEVOR Sie das Script starten" exit 0 fi # Datenbanksicherung in die Live-DB einlesen date +"%d.%m.%Y %T" echo "Einlesen der Datenbank-Sicherung in die Live-Datenbank: Start" /usr/local/mysql5/bin/mysql -p -u username databasename < /home/vhost/_backup/databasename.sql date +"%d.%m.%Y %T" echo "Einlesen der Datenbank-Sicherung in die Live-Datenbank: Ende" # Live-System Verzeichnis umbenennen echo "Verzeichnis Livesystem umbenennen (_old)" mv /home/vhost/www.xyz.de /home/vhost/www.xyz.de_old # Files der Sicherung in Livesystem "verwandeln" echo "Verzeichnis des Backups in Livesystem 'verwandeln'" mv /home/vhost/_backup/www.xyz.de /home/vhost/www.xyz.de echo echo "Der Rollback wurde vollständig durchgeführt" echo "Das Livesystem sollte nun wie vorher funktionieren" echo echo "Bitte den Wartungsmodus im Livesystem wieder ausschalten !"