Come saltare tabelle specifiche con drush sql-dump?


9

Ho un file di configurazione di Drush ~ / .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')
);

E ho un file di script bash:

/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

Ma quando lo eseguo, il file di backup contiene ancora dati nelle tabelle della cache. Che cosa sto facendo di sbagliato?

E la seconda domanda è: se inserisco questo in crontab, devo inserire il file di configurazione da qualche altra parte?

Uso Drush versione 8.


1
Mi chiedo se drushrc.phpnon viene eseguito. Prova a var_dump di $options['structure-tables']in drushrc.phpsolo per confermare che è in esecuzione.
mannaia

Risposte:


0

Scusa, non posso aiutarti molto con la tua prima domanda ...

La tua seconda domanda ha posto:

E la seconda domanda è: se inserisco questo in crontab, devo inserire il file di configurazione da qualche altra parte?

Il sito della documentazione di Drush si collega al file di esempio drushrc.php che dice dove è possibile posizionare il file rc:

https://raw.githubusercontent.com/drush-ops/drush/master/examples/example.drushrc.php

Rinominare questo file in drushrc.php e facoltativamente copiarlo in uno dei posti elencati di seguito in ordine di precedenza:

  1. Cartella del sito Drupal (ad es. Siti / {default | esempio.com} /drushrc.php).
  2. Cartelle Drupal / drush e sites / all / drush o la cartella / drush nella directory sopra la radice Drupal.
  3. In qualsiasi posizione, come specificato dall'opzione --config (-c).
  4. Cartella .drush dell'utente (ovvero ~ / .drush / drushrc.php).
  5. Cartella di configurazione del sistema (ad es. /Etc/drush/drushrc.php).
  6. Drush cartella di installazione.

Per Cron la documentazione raccomanda che Drush sia configurato per essere eseguito come lo stesso utente che gestisce il tuo server web. Detto questo, ti consiglio di posizionare il file rc in posizione (5), una cartella di configurazione a livello di sistema. Sì, i file Drush rc più localizzati dovranno quindi sovrascrivere il file di configurazione dell'intero sistema, se necessario (vabbè).


Tutti questi collegamenti sono ora 404. :(
Dale Anderson,

@DaleAnderson ... questa è Internet e nulla è permanente. Ecco un utile servizio per te, ti consiglio di imparare come usare, tieni presente che ho appena scelto un'istantanea del settembre 2015 del sito web drush.org web.archive.org/web/20150905130324/http://www.drush.org: 80 / it /… In questo momento dovresti considerare anche di esaminare strumenti più recenti come Drupal Console o i documenti di Drush 9.
tenken

24

Scarica tutte le tabelle tranne la cachetabella e le tabelle che iniziano con cache_.

drush sql-dump --skip-tables-list=cache,cache_* > dumpfile.sql

Solo struttura del database. Nessun dato.

drush sql-dump --extra=--no-data > dumpfile.sql

Solo dati. Nessun dato cache e nessuna struttura cache.

drush sql-dump --skip-tables-list=cache,cache_* --data-only > dumpfile.sql

Nessun dato cache ma dump nelle loro strutture.

drush sql-dump --structure-tables-list=cache,cache_* > dumpfile.sql

documentazione sql-dump


Il --extra=--no-datanon funzionava per me, ma sono stato in grado di fare --skip-tables-list="*"e che ha funzionato.
Greggles,

Potresti voler usare le virgolette, ad esempio "cache,cache_*"per impedire alla tua shell di abbinare i file chiamati cache_*nella tua directory di lavoro.
Rudolfbyker,

0

Per qualche motivo cache_ * non ha funzionato per me con drush 9+ fino a quando non ho omesso il carattere di sottolineatura. Tuttavia, questo può essere specifico per il mio (server) bash / terminal. Cosa ha funzionato per me:

drush sql-dump --skip-tables-list=cache*

e puoi sempre aggiungere il --verboseper vedere l'attuale dump mysql ed è il parametro --ignore.


Con bash, se cache_*corrisponde a qualsiasi file nella directory corrente, bash genererà tali nomi di file e li utilizzerà come argomento. Puoi racchiuderlo tra virgolette doppie per assicurarti che il valore letterale venga passato al comando anziché a tutti i file che contiene.
Greggles,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.