Entwicklung: Neue Option für drush sql-dump

10. November 2012

Neues aus der Reinblau-Entwicklung. Florian Latzel stellt die Drush-Erweiterung drush_sql_dump_hold vor, die das Drush-Kommando sql-dump, um eine weitere Option erweitert: hold.

Diese Option wurde für die häufige, wenn nicht sogar periodische Ausführung von drush sql-dump geschrieben und sorgt dafür, dass im via Option result-file (Mandatory) spezifizierten Verzeichnis, nur die durch hold-Option angegebene Anzahl von SQL-Dumps aufbewahrt wird. Hier das Beispiel einer manuellen Ausführung über die Shell innerhalb einer Drupal-Instanz:

  • Aus der Angabe in der Option result-file wird versucht, den Pfad zu extrahieren, ansonsten wird das aktuelle Verzeichnis genommen
  • Durch den Befehl date bekommt der Dump seinen eindeutigen Namen, welcher sich aus JahrMonatTag-StundeMinuteSekunde + Erweiterung sql zusammensetzt und somit sortierbar ist
  • Die Validierung dieser Option wird durch das sql-dump Kommando gewährleistet
  • Zu guter letzt sorgt die Option --hold=30 dafür, dass die die neusten 30 SQL-Dumps behalten werden

drush sql-dump --result-file=/path/to/dumps/`date +%Y%M%d-%H%m%S`.sql --hold=30

Dieser Aufruf erzeugt folgende Ausgabe, bei z. B. 33 Dumps und einem hold-Wert von 30:

Database dump saved to /path/to/dumps/20121109-113000.sql [success] Do you really want to purge the following dumps: /path/to/dumps/20111213-202504.sql /path/to/dumps/20111214-202504.sql /path/to/dumps/20111214-202504.sql /path/to/dumps/20111216-202504.sql (y/n):

Beispielhafte Drush-Alias-Konfiguration für drush sql-dump in Kombination mit hold-Option.

'default', 'root' => '/path/to/drupal'), 'command-specific' => array ( 'sql-dump' => array( 'result-file' => TRUE, 'result-file' => '/path/to/dump-dir/@DATABASE_@DATE.sql', 'gzip' => TRUE, 'hold' => 30, 'yes' => TRUE, ), ), );

Ein Cronjob für die periodische Ausführung von drush sql-dump einrichten.

crontab -e # m h dom mon dow command 45 4 * * * /path/to/drush @mysite sql-dump