Shell Variablennutzung

Shell Variablennutzung

Bei der Zuweisung von Werten (hier Text) zu Variablen im Shellscript musste ich lernen, dass das berühmt-berüchtigte Dollarzeichen, welches in vielen Sprachen eine String-Variable kennzeichnet, zunächst nicht gefordert ist. In der einfachen Art und Weise wird ein Variablenname erfunden, dem direkt ohne Leerzeichen ein Gleichzeitszeichen folgt, hinter dem dann in Gänsefüßchen, also doppelten Hochkommata und wiederum ohne Leerzeichen, der Text folgt, der in der Variablen gespeichert werden soll. Der Datentyp ist hier grundsätzlich zunächst nicht wichtig.

Eine meiner ersten Aufgaben, die mit einem Shellscript erledigt werden sollte, war ein automatisiertes Backup (über Cronjob) meiner wichtigen Daten auf eine separate Festplatte. Das Script für einen MySQL-Dump selber stelle ich nicht vor, zumindest nicht an dieser Stelle, es geht hier nur um die Art und Weise, wie ich den Dateinamen für den MySQL-Dump in einer Variablen speichere. Das sieht dann so aus:

sqldatei="/home/jopii/dbsicherung/sqldatei.sql"
Die Datei für den SQL-Dump wird in einer Variablen gespeichert.

Wenn nun im nachfolgenden Scriptcode die Zeile mit dem Statement zum MySQL-Dump erscheint, kann ich mit der Variablen den Ort der Dateiablage zuweisen. Das sieht dann wie folgt aus:

mysqldump -u xxx -h localhost --password="xxx" jopii_hauptdb > $sqldatei
Die zuvor gefüllt Variable wird nun mit einem vorangestellten Dollarzeichen genutzt.

Damit wird der MySQL-Dump in der entsprechenden SQL-Datei gespeichert. Im Falle der Fälle kann ich diese SQL-Datei nutzen, um meine Datenbank wiederherstellen zu können. Damit ich mir nicht jedes Mal die SQL-Datei ersetze, sondern eine Versionierung vornehme, habe ich noch eine weitere Programmzeile hinzugefügt. Diese bewirkt, dass die erstellte SQL-Datei gezippt und im Dateinamen mit einem Datum versehen wird. Der Befehl dazu ist wie folgt:

zip -r /home/jopii/dbsicherung/sqldatei.sql_‵date +%Y-%m-%d‵.zip $sqldatei
SQL-Dump wird gezippt und mit einem Datum versehen.

Wie zu sehen ist, steht die Datumsangabe in Akzentzeichen. Im Internet gibt es einige Hinweise, dass diese Schreibweise so nicht mehr genutzt werden sollte. Allerdings habe ich es nicht geschafft, die Akzentzeichen zu ersetzen, daher nutze ich sie für meine Belange weiter.

Insgesamt ist damit sichergestellt, dass jeden Tag, sofern der PC läuft, um 21.00 Uhr ein SQL-Dump erstellt wird. Alle paar Tage lösche ich die älteren Versionen. Der Dateiname sieht wie folgt aus:

sqldatei.sql_2020-01-03.zip

Alle Datenbanken werden in dieser Art und Weise, egal ob MyISAM- oder InnoDB-Datenbanken, gesichert und über mehrere Tage vorgehalten. Das Desaster vom Juli 2019 wird sich hoffentlich so nicht mehr wiederholen können.

In ähnlicher Art und Weise sichere ich auch mein Homeverzeichnis, natürlich ohne Dump und ohne Zipperei, und meine Projektverzeichnisse (mit Zipperei). Es soll nichts verlorengehen.