Ich habe eine Drush-Konfigurationsdatei ~ / .drush / drushrc.php:
if (!isset($options['structure-tables']['common'])) {
$options['structure-tables']['common'] = array(
'cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog'
);
}
$options['structure-tables']['common'] = array_merge($options['structure-tables']['common'],
array('ctools_css_cache', 'ctools_object_cache', 'logz', 'views_object_cache')
);
Und ich habe eine Bash-Skriptdatei:
/usr/bin/drush sql-dump --root="/home/username/domains/sitename/www" --skip-tables-key="common" --gzip --result-file=/home/username/backup/$year/$month/dbname_$date_now_time.sql
Aber wenn ich es ausführe, hat die Sicherungsdatei immer noch Daten in Cache-Tabellen. Was mache ich falsch?
Und die zweite Frage ist: Wenn ich dies in crontab ablege, muss ich die Konfigurationsdatei woanders ablegen?
Ich benutze Drush Version 8.
drushrc.php
nicht läuft. Versuchen Sie einen var_dump von$options['structure-tables']
in thedrushrc.php
just, um zu bestätigen, dass es ausgeführt wird.Antworten:
Entschuldigung, ich kann Ihnen bei Ihrer ersten Frage nicht viel helfen ...
Ihre 2. Frage gestellt:
Die Drush-Dokumentationssite enthält Links zur Beispieldatei drushrc.php , in der angegeben ist, wo Sie die RC-Datei ablegen können:
https://raw.githubusercontent.com/drush-ops/drush/master/examples/example.drushrc.php
Für Cron wird in der Dokumentation empfohlen , Drush so zu konfigurieren, dass es als derselbe Benutzer ausgeführt wird, der Ihren Webserver ausführt. Davon abgesehen empfehle ich Ihnen, Ihre RC-Datei an Speicherort (5), einem systemweiten Konfigurationsordner, abzulegen. Ja, lokalisierte Drush-RC-Dateien müssen dann Ihre systemweite Konfigurationsdatei nach Bedarf überschreiben (na ja).
quelle
Speichern Sie alle Tabellen mit Ausnahme der
cache
Tabelle und der Tabellen, die mit beginnencache_
.Nur Datenbankstruktur. Überhaupt keine Daten.
Nur Daten. Keine Cache-Daten und keine Cache-Struktur.
Keine Cache-Daten, sondern Speicherauszug in ihren Strukturen.
SQL-Dump-Dokumentation
quelle
--extra=--no-data
bei mir nicht funktioniert, aber ich konnte es--skip-tables-list="*"
und das hat funktioniert."cache,cache_*"
zu verhindern, dass Ihre Shell mit Dateien übereinstimmt, diecache_*
in Ihrem Arbeitsverzeichnis aufgerufen wurden .Aus irgendeinem Grund funktionierte cache_ * mit drush 9+ nicht für mich, bis ich den Unterstrich wegließ. Dies kann jedoch spezifisch für meine (Server-) Bash / Terminal sein. Was hat bei mir funktioniert:
und Sie können jederzeit den hinzufügen
--verbose
, um den tatsächlichen MySQL-Speicherauszug und dessen Parameter --ignore anzuzeigen.quelle
cache_*
Dateien in Ihrem aktuellen Verzeichnis übereinstimmen, werden diese Dateinamen von bash globalisiert und als Argument verwendet. Sie können doppelte Anführungszeichen setzen, um sicherzustellen, dass der Literalwert an den Befehl übergeben wird, anstatt an alle Dateien, die er globalisiert.