Як пропустити конкретні таблиці за допомогою 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

Вибачте, я не можу вам допомогти багато з вашим першим запитанням ...

Ваше 2-е запитання:

І друге питання - Якщо я вставлю це в crontab, чи потрібно мені розміщувати файл конфігурації десь ще?

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

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

Перейменуйте цей файл на drushrc.php і необов'язково скопіюйте його в одне з перелічених нижче місць у порядку черговості:

  1. Папка сайту Drupal (наприклад, сайти / {за замовчуванням | example.com} /drushrc.php).
  2. Drupal / drush та сайти / all / drush папки, або папка / drush у каталозі над корінком Drupal.
  3. У будь-якому місці, визначеному параметром --config (-c).
  4. Папка .drush користувача (тобто ~ / .drush / drushrc.php).
  5. Папка конфігурації для всієї системи (наприклад, /etc/drush/drushrc.php).
  6. Натисніть на інсталяційну папку.

Для документації Cron документація рекомендує налаштовувати Drush як той самий користувач, який запускає ваш веб-сервер. Незважаючи на це, я рекомендую розмістити файл rc в місці (5), папці конфігурації для всієї системи. Так, більше локалізованих файлів Drush rc потрібно буде замінити ваш файл конфігурації для системи (ну добре).


Усі ці посилання зараз 404-х. :(
Дейл Андерсон

@DaleAnderson ... це Інтернет, і нічого не є постійним. Ось зручний сервіс для вас, я рекомендую вам навчитися користуватися. Зверніть увагу, що я лише вибрав знімок веб-сайту drush.org вересня 2015 року веб.archive.org/ web/ 20150905130324/ http://www.drush.org: 80 / en / ... У цей час вам слід також розглянути новітні інструменти, такі як Drupal Console або Drush 9.
tenken

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-дамп документація


Я --extra=--no-dataне працював для мене, але я зміг це зробити, --skip-tables-list="*"і це спрацювало.
грегліть

Можливо, ви хочете використовувати лапки, як, наприклад, "cache,cache_*"не дозволяти вашій оболонці відповідати файлам, викликаним cache_*у вашому робочому каталозі.
rudolfbyker

0

З якоїсь причини cache_ * не працював для мене з drush 9+, поки я не опустив підкреслення. Однак це може бути специфічно для мого (серверного) bash / терміналу. Що для мене спрацювало:

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

і ви завжди можете додати, --verboseщоб побачити фактичний дамп mysql, і це параметр --ignore.


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