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

しかし、それを実行すると、バックアップファイルにはまだキャッシュテーブルにデータがあります。何が悪いのですか?

そして2番目の質問は-これをcrontabに入れた場合、構成ファイルをどこかに置く必要がありますか?

Drushバージョン8を使用しています。


1
drushrc.php実行されていないのかな。ののvar_dumpを試し$options['structure-tables']drushrc.phpそれが実行されていていることだけを確認するために。
包丁

回答:


0

申し訳ありませんが、最初の質問ではあまりお手伝いできません...

2つ目の質問:

そして2番目の質問は-これをcrontabに入れた場合、構成ファイルをどこかに置く必要がありますか?

drushrc.phpサンプルファイルにdrushドキュメントサイトへのリンク:あなたがrcファイルを置いていると言います

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フォルダー、またはDrupalルートの上のディレクトリーにある/ drushフォルダー。
  3. --config(-c)オプションで指定された任意の場所。
  4. ユーザーの.drushフォルダー(例:〜/ .drush / drushrc.php)。
  5. システム全体の設定フォルダ(/etc/drush/drushrc.phpなど)。
  6. Drushインストールフォルダ。

Cronの場合、ドキュメントでは、Drushをウェブサーバーを実行するのと同じユーザーとして実行するように設定することを推奨しています。とは言っても、rcファイルをシステム全体の構成フォルダー(5)に配置することをお勧めします。はい。ローカライズされたDrush rcファイルは、必要に応じてシステム全体の構成ファイルをオーバーライドする必要があります(まあ)。


これらのリンクはすべて404です。:(
デールアンダーソン

@DaleAnderson ...これはインターネットであり、永続的なものはありません。これは、使用方法を学ぶことをお勧めする便利なサービスです。2015年9月にdrush.orgサイトweb.archive.org/web/20150905130324/http://www.drush.orgのスナップショットを選択したことに注意してください。 80 / en /… 現時点では、Drupal ConsoleやDrush 9ドキュメントなどの新しいツールも検討する必要があります。
テンケン

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="*"し、それが働きました。
18:06に集まる

"cache,cache_*"シェルがcache_*作業ディレクトリで呼び出されたファイルと一致しないようにするために、引用符を使用することもできます。
rudolfbyker

0

何らかの理由で、アンダースコアを省略するまで、drush 9以降ではcache_ *が機能しませんでした。ただし、これは私の(サーバー)bash /ターミナルに固有の場合があります。私のために働いたもの:

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

そして、いつでも--verbose実際のmysqlダンプを表示するためにを追加でき、それは--ignoreパラメーターです。


bashではcache_*、現在のディレクトリ内のファイルと一致する場合、bashはそれらのファイル名をグロブし、それを引数として使用します。コマンドを二重引用符で囲んで、グロブするファイルではなく、リテラル値がコマンドに渡されるようにすることができます。
集まる
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.