Eu tenho um arquivo de configuração 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 eu tenho um arquivo 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
Mas quando eu o executo, o arquivo de backup ainda tem dados nas tabelas de cache. O que estou fazendo errado?
E a segunda pergunta é - se eu colocar isso no crontab, preciso colocar o arquivo de configuração em outro lugar?
Eu uso o Drush versão 8.
drushrc.php
não está sendo executado. Tente um var_dump do$options['structure-tables']
nodrushrc.php
just para confirmar que está sendo executado.Respostas:
Desculpe, não posso ajudá-lo muito com sua primeira pergunta ...
Sua segunda pergunta foi feita:
O site da documentação do drush está vinculado ao arquivo de exemplo drushrc.php que diz onde você pode colocar o arquivo rc:
https://raw.githubusercontent.com/drush-ops/drush/master/examples/example.drushrc.php
Para Cron, a documentação recomenda que o Drush seja configurado para ser executado como o mesmo usuário que executa seu servidor da web. Dito isto, recomendo que você coloque seu arquivo rc no local (5), uma pasta de configuração em todo o sistema. Sim, os arquivos Drush rc mais localizados precisarão substituir o arquivo de configuração em todo o sistema, conforme necessário (tudo bem).
fonte
Despejar todas as tabelas, exceto a
cache
tabela e as tabelas iniciadas porcache_
.Somente estrutura do banco de dados. Nenhum dado.
Apenas dados. Nenhum dado de cache e nenhuma estrutura de cache.
Nenhum dado de cache, mas despejo em suas estruturas.
documentação do sql-dump
fonte
--extra=--no-data
não estava funcionando para mim, mas eu era capaz de fazer--skip-tables-list="*"
e funcionou."cache,cache_*"
para impedir que seu shell corresponda aos arquivos chamadoscache_*
no diretório de trabalho.Por alguma razão, cache_ * não funcionou para mim com drush 9+ até que eu omitisse o sublinhado. No entanto, isso pode ser específico para o meu bash / terminal (servidor). O que funcionou para mim:
e você sempre pode adicionar o
--verbose
para ver o despejo real do mysql e seu parâmetro --ignore.fonte
cache_*
corresponder a qualquer arquivo em seu diretório atual, o bash irá globar esses nomes de arquivo e usá-lo como argumento. Você pode colocar aspas duplas em volta dele para garantir que o valor literal seja passado para o comando em vez de quaisquer arquivos que ele exibir.