Как пропустить конкретные таблицы с помощью Drush sql-dump?


9

У меня есть файл конфигурации 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')
);

И у меня есть файл сценария 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

Но когда я выполняю его, файл резервной копии все еще содержит данные в кеш-таблицах. Что я делаю неправильно?

И второй вопрос: если я помещу это в crontab, нужно ли мне помещать файл конфигурации где-нибудь еще?

Я использую Drush версии 8.


1
Интересно drushrc.php, не запускается ли? Попробуйте var_dump из $options['structure-tables']в drushrc.phpтолько , чтобы подтвердить , что это время запуска.
Кливер

Ответы:


0

Извините, я не могу вам помочь с вашим первым вопросом ...

Ваш второй вопрос задан:

И второй вопрос: если я помещу это в crontab, нужно ли мне помещать файл конфигурации где-нибудь еще?

В Drush документации на сайте ссылки на drushrc.php пример файла , который говорит , где вы можете поместить файл гс:

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

Переименуйте этот файл в drushrc.php и при необходимости скопируйте его в одно из мест, перечисленных ниже, в порядке приоритета:

  1. Папка сайта Drupal (например, sites / {default | example.com} /drushrc.php).
  2. Папки Drupal / drush и sites / all / drush или папка / drush в каталоге над корнем Drupal.
  3. В любом месте, как указано параметром --config (-c).
  4. Папка пользователя .drush (т.е. ~ / .drush / drushrc.php).
  5. Общесистемная папка конфигурации (например, /etc/drush/drushrc.php).
  6. Папка установки Drush.

Для Cron документация рекомендует настроить Drush для запуска под тем же пользователем, который запускает ваш веб-сервер. При этом я рекомендую вам поместить свой rc-файл в папку (5), общесистемную папку конфигурации. Да, более локализованные файлы Drush rc затем должны будут переопределить ваш системный файл конфигурации по мере необходимости (да ладно).


Все эти ссылки теперь 404-х годов. :(
Дейл Андерсон

@DaleAnderson ... это Интернет и ничто не вечно. Вот полезный сервис для вас, я рекомендую вам научиться его использовать. Обратите внимание, что я просто выбрал снимок сентября 2015 года с сайта drush.org web.archive.org/web/20150905130324/http://www.drush.org: 80 / ru /… В настоящее время вам следует рассмотреть возможность использования новых инструментов, таких как Drupal Console или Drush 9 docs.
Тенкен

24

Дамп всех таблиц, кроме cacheтаблицы и таблиц, начинающихся с cache_.

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

Только структура базы данных. Нет данных вообще.

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

Только данные. Нет данных кеша и нет структуры кеша.

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

Нет данных кэша, но дамп в их структурах.

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

документация sql-dump


--extra=--no-dataНе работает для меня, но я был в состоянии сделать --skip-tables-list="*"и что работал.
Greggles

Возможно, вы захотите использовать кавычки, например, "cache,cache_*"чтобы ваша оболочка не совпала с файлами, вызываемыми cache_*в вашем рабочем каталоге.
rudolfbyker

0

По какой-то причине cache_ * не работал для меня с drush 9+, пока я не опустил подчеркивание. Однако это может быть характерно для моего (серверного) bash / терминала. Что сработало для меня:

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

и вы всегда можете добавить --verboseфактический дамп mysql и его параметр --ignore.


С bash, если cache_*совпадает с какими-либо файлами в вашем текущем каталоге, то bash выведет эти имена и использует их в качестве аргумента. Вы можете поместить двойные кавычки вокруг него, чтобы гарантировать, что литеральное значение передается команде вместо любых файлов, которые она содержит.
Greggles
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.