Drushを使用して、rsync
とsql-sync
を使用して、開発サイト、ステージングサイト、ライブサイトを同期しています。 sql-sync
で、パターンを使用して名前が付けられたダンプファイルを作成します。たとえば、ダンプファイルの名前をsite_database_name__date_time
にしたいとします。 example.drushrc.php
を見ると、@DATABASE
の@DATE
オプションに--result-file
とsql-dump
を使用できることがわかりました。サイトのエイリアス定義で同じパターンを使用しようとしましたが、うまくいきませんでした。置換パターンを使用して、ダンプファイルが適切に作成されます。しかし、データベースをターゲットサイトに復元しようとすると、「@ [email protected]」などのファイルがないことを示すエラーがスローされます。したがって、sql-sync
の復元フェーズを実行しても、置き換えは行われません。これを機能させる方法はありますか?または私はここで間違ったアプローチを取っていますか?
私はsql-sync
のドキュメントがこれらのダンプファイルの「temp」ディレクトリを参照していることを理解しています。これは、それらが保持されることを意図していないことを意味します。私の考えは、何かがうまくいかなかった場合に、各同期に何が使用されたかの記録のためにそれらを保持することです。
以下は、私が使用しているサイトエイリアスの例で、%dump
が使用するsql-sync
パスエイリアスを指定しています。
$aliases['dev'] = array(
'uri' => 'dev.example.com',
'root' => '/home/websites/dev.example.com',
'path-aliases' => array(
'%files' => 'sites/files',
'%dump' => '/home/username/tmp/drush/@DATABASE_@DATE',
),
'command-specific' => array (
'sql-sync' => array (
'simulate' => '1',
'structure-tables' => array(
'custom' => array('cache', 'cache_filter', 'cache_menu',
'cache_page', 'history', 'sessions', 'watchdog'),
),
),
),
);
'%dump-dir'ディレクティブを使用すると、drushはリモートホストの名前とデータベースの名前に基づいてダンプファイルの名前を作成します。リモートsql-syncのデータベース名に日付を含めないことをお勧めします。これは、データベースダンプの増分変更のみを更新できる場合はrsync操作がより高速になるためです。もちろん、ファイル名が変更された場合、これは不可能です。すべての操作で。
日付をデータベースダンプのファイル名に表示して、drupalサイトのバックアップとしても機能させるには、Drupalでファイルをバックアップするように注意する必要があります。 _ rootも同様です。データベースの作成に使用したものとは異なるバージョンのコード(コアまたはcontrib)でSQLデータベースを使用しようとすると、Drupalが単純に(エラーまたはWSODで)失敗するのが一般的です。
データベースとファイルを一緒にバックアップする簡単な方法は、drush archive-dumpコマンドを使用することです。このコマンドには、逆方向に移動するための便利なarchive-restoreコマンドもあります。
上記のいくつかの組み合わせは、上記の質問であなたがしようとしていることよりもおそらく良い解決策です。探している正確な機能は、現在Drushではサポートされていません。私たちは確かにその機能を追加する機能リクエストを検討することができます(提案されたパッチが既に添付されたdrush問題キューに投稿されることが理想的です-commands/sql/sql.drush.incのfunction drush_sql_dump_file
を参照してください)。ほとんどの場合、すでに説明されている代替案がおそらくより良いので、それを受け入れる。