Comment ignorer des tables spécifiques avec drush sql-dump?

9

J'ai un fichier de configuration 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')
);

Et j'ai un fichier 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

Mais quand je l'exécute, le fichier de sauvegarde contient toujours des données dans des tables de cache. Qu'est-ce que je fais mal?

Et la deuxième question est - Si je mets cela dans crontab, dois-je mettre le fichier de configuration ailleurs?

J'utilise Drush version 8.

dark_kz
la source
1
Je me demande si le drushrc.phpn'est pas en cours d'exécution. Essayez un var_dump du $options['structure-tables']dans drushrc.phpjuste pour confirmer qu'il est en cours d'exécution.
couperet du

Réponses:

0

Désolé, je ne peux pas vous aider beaucoup avec votre première question ...

Votre 2e question demandait:

Et la deuxième question est - Si je mets cela dans crontab, dois-je mettre le fichier de configuration ailleurs?

Le site de documentation de drush est lié au fichier d'exemple drushrc.php qui indique où vous pouvez placer le fichier rc:

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

Renommez ce fichier en drushrc.php et copiez-le éventuellement à l'un des emplacements répertoriés ci-dessous par ordre de priorité:

  1. Dossier du site Drupal (par exemple sites / {default | example.com} /drushrc.php).
  2. Drupal / drush et sites / all / drush, ou le dossier / drush dans le répertoire au-dessus de la racine Drupal.
  3. Dans n'importe quel emplacement, comme spécifié par l'option --config (-c).
  4. Dossier .drush de l'utilisateur (c'est-à-dire ~ / .drush / drushrc.php).
  5. Dossier de configuration à l'échelle du système (par exemple /etc/drush/drushrc.php).
  6. Dossier d'installation Drush.

Pour Cron, la documentation recommande que Drush soit configuré pour s'exécuter en tant que même utilisateur qui exécute votre serveur Web. Cela étant dit, je vous recommande de placer votre fichier rc à l'emplacement (5), un dossier de configuration à l'échelle du système. Oui, les fichiers rc Drush plus localisés devront alors remplacer votre fichier de configuration à l'échelle du système si nécessaire (eh bien).

tenken
la source
Tous ces liens sont maintenant des 404. :(
Dale Anderson
@DaleAnderson ... c'est Internet et rien n'est permanent. Voici un service pratique pour vous que je vous recommande d'apprendre à utiliser, veuillez noter que je viens de choisir un instantané de septembre 2015 du site drush.org web.archive.org/web/20150905130324/http://www.drush.org: 80 / fr /… À ce stade, vous devriez également envisager de consulter de nouveaux outils tels que la console Drupal ou la documentation Drush 9.
tenken
24

Vider toutes les tables sauf la cachetable et les tables commençant par cache_.

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

Structure de la base de données uniquement. Pas de données du tout.

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

Données uniquement. Aucune donnée de cache et aucune structure de cache.

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

Aucune donnée de cache mais vidage dans leurs structures.

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

documentation sql-dump

Francisco Luz
la source
Le --extra=--no-datane fonctionnait pas pour moi, mais j'ai pu faire --skip-tables-list="*"et cela a fonctionné.
gréggle le
Vous voudrez peut-être utiliser des guillemets, comme "cache,cache_*"pour empêcher votre shell de faire correspondre les fichiers appelés cache_*dans votre répertoire de travail.
rudolfbyker
0

Pour une raison quelconque, cache_ * n'a pas fonctionné pour moi avec drush 9+ jusqu'à ce que j'aie omis le trait de soulignement. Cependant, cela peut être spécifique à mon (serveur) bash / terminal. Ce qui a fonctionné pour moi:

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

et vous pouvez toujours ajouter le --verbosepour voir le vidage mysql réel et son paramètre --ignore.

awm
la source
Avec bash, si cache_*correspond à tous les fichiers de votre répertoire actuel, bash globera ces noms de fichiers et les utilisera comme argument. Vous pouvez mettre des guillemets doubles autour d'elle pour vous assurer que la valeur littérale est transmise à la commande au lieu de tous les fichiers qu'elle globe.
gréggle le