¿Cómo omitir tablas específicas con drush sql-dump?


9

Tengo un archivo de configuración 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')
);

Y tengo un archivo de 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

Pero cuando lo ejecuto, el archivo de respaldo todavía tiene datos en las tablas de caché. ¿Qué estoy haciendo mal?

Y la segunda pregunta es: si pongo esto en crontab, ¿debo poner el archivo de configuración en otro lugar?

Yo uso Drush versión 8.


1
Me pregunto si drushrc.phpno se está ejecutando. Pruebe una var_dump de la $options['structure-tables']en el drushrc.phpsolo para confirmar que se está ejecutando.
cuchilla

Respuestas:


0

Lo siento, no puedo ayudarte mucho con tu primera pregunta ...

Su segunda pregunta es:

Y la segunda pregunta es: si pongo esto en crontab, ¿debo poner el archivo de configuración en otro lugar?

El sitio de documentación de drush enlaza con el archivo de ejemplo drushrc.php que dice dónde puede colocar el archivo rc:

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

Cambie el nombre de este archivo a drushrc.php y, opcionalmente, cópielo en uno de los lugares enumerados a continuación en orden de prioridad:

  1. Carpeta del sitio de Drupal (por ejemplo, sitios / {default | example.com} /drushrc.php).
  2. Carpetas Drupal / drush y sites / all / drush, o la carpeta / drush en el directorio sobre la raíz de Drupal.
  3. En cualquier ubicación, según lo especificado por la opción --config (-c).
  4. Carpeta .drush del usuario (es decir, ~ / .drush / drushrc.php).
  5. Carpeta de configuración de todo el sistema (por ejemplo, /etc/drush/drushrc.php).
  6. Carpeta de instalación de drush.

Para Cron, la documentación recomienda que Drush se configure para ejecutarse como el mismo usuario que ejecuta su servidor web. Dicho esto, le recomiendo que coloque su archivo rc en la ubicación (5), una carpeta de configuración de todo el sistema. Sí, los archivos Drush rc más localizados deberán anular el archivo de configuración de todo el sistema según sea necesario (bueno).


Todos estos enlaces son ahora de 404. :(
Dale Anderson

@DaleAnderson ... esto es Internet y nada es permanente. Aquí hay un servicio útil para usted. Le recomiendo que aprenda a usarlo. Tenga en cuenta que acabo de elegir una instantánea de septiembre de 2015 del sitio drush.org web.archive.org/web/20150905130324/http://www.drush.org: 80 / es / ... En este momento debería considerar también buscar herramientas más nuevas como la consola Drupal o los documentos de Drush 9.
tenken

24

Volcar todas las tablas excepto la cachetabla y las tablas que comienzan con cache_.

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

Estructura de base de datos solamente. No hay datos en absoluto.

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

Solo datos. Sin datos de caché ni estructura de caché.

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

Sin datos de caché, pero volcado en sus estructuras.

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

documentación de sql-dump


El --extra=--no-datano funcionaba para mí, pero pude hacerlo --skip-tables-list="*"y funcionó.
Greggles

Es posible que desee utilizar comillas, como "cache,cache_*"para evitar que su shell coincida con los archivos llamados cache_*en su directorio de trabajo.
rudolfbyker

0

Por alguna razón, cache_ * no funcionó para mí con drush 9+ hasta que omití el guión bajo. Sin embargo, esto puede ser específico para mi (servidor) bash / terminal. Lo que funcionó para mí:

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

y siempre puede agregar el --verbosepara ver el volcado de mysql real y su parámetro --ignore.


Con bash, si cache_*coincide con algún archivo en su directorio actual, bash englobará esos nombres de archivo y lo usará como argumento. Puede poner comillas dobles a su alrededor para asegurarse de que el valor literal se pase al comando en lugar de los archivos que engloba.
Greggles
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.