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.
drushrc.php
n'est pas en cours d'exécution. Essayez un var_dump du$options['structure-tables']
dansdrushrc.php
juste pour confirmer qu'il est en cours d'exécution.Réponses:
Désolé, je ne peux pas vous aider beaucoup avec votre première question ...
Votre 2e question demandait:
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
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).
la source
Vider toutes les tables sauf la
cache
table et les tables commençant parcache_
.Structure de la base de données uniquement. Pas de données du tout.
Données uniquement. Aucune donnée de cache et aucune structure de cache.
Aucune donnée de cache mais vidage dans leurs structures.
documentation sql-dump
la source
--extra=--no-data
ne fonctionnait pas pour moi, mais j'ai pu faire--skip-tables-list="*"
et cela a fonctionné."cache,cache_*"
pour empêcher votre shell de faire correspondre les fichiers appeléscache_*
dans votre répertoire de travail.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:
et vous pouvez toujours ajouter le
--verbose
pour voir le vidage mysql réel et son paramètre --ignore.la source
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.