Làm thế nào để bỏ qua các bảng cụ thể với drush sql-dump?


9

Tôi có tệp cấu hình 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')
);

Và tôi có một tập tin bash script:

/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

Nhưng khi tôi thực hiện nó, tập tin sao lưu vẫn có dữ liệu trong các bảng bộ đệm. Tôi đang làm gì sai?

Và câu hỏi thứ hai là - Nếu tôi đặt cái này vào crontab, tôi có cần đặt tập tin cấu hình ở nơi khác không?

Tôi sử dụng Drush phiên bản 8.


1
Tôi tự hỏi nếu drushrc.phpkhông được chạy. Hãy thử một var_dump của $options['structure-tables']trong drushrc.phpchỉ để xác nhận rằng nó đang được chạy.
cleaver

Câu trả lời:


0

Xin lỗi tôi không thể giúp bạn nhiều với câu hỏi đầu tiên của bạn ...

Câu hỏi thứ 2 của bạn đã hỏi:

Và câu hỏi thứ hai là - Nếu tôi đặt cái này vào crontab, tôi có cần đặt tập tin cấu hình ở nơi khác không?

Các liên kết trang web tài liệu drush để drushrc.php tập tin ví dụ mà nói, nơi bạn có thể đặt file rc:

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

Đổi tên tệp này thành drushrc.php và tùy ý sao chép tệp vào một trong những vị trí được liệt kê bên dưới theo thứ tự ưu tiên:

  1. Thư mục trang web Drupal (ví dụ: các trang web / {default | example.com} /drushrc.php).
  2. Các thư mục Drupal / drush và các trang web / all / drush hoặc thư mục / drush trong thư mục phía trên root Drupal.
  3. Ở bất kỳ vị trí nào, như được chỉ định bởi tùy chọn --config (-c).
  4. Thư mục .drush của người dùng (tức là ~ / .drush / drushrc.php).
  5. Thư mục cấu hình toàn hệ thống (ví dụ /etc/drush/drushrc.php).
  6. Thư mục cài đặt Drush.

Đối với Cron, tài liệu khuyến nghị rằng Drush nên được cấu hình để chạy với cùng một người dùng chạy máy chủ web của bạn. Điều đó đang được nói tôi khuyên bạn nên đặt tệp RC của bạn ở vị trí (5), một thư mục cấu hình trên toàn hệ thống. Có, các tệp RC Drush được bản địa hóa hơn sau đó sẽ cần ghi đè lên tệp cấu hình trên toàn hệ thống của bạn khi cần (ồ tốt).


Tất cả các liên kết này hiện là 404. :(
Dale Anderson

@DaleAnderson ... đây là Internet và không có gì là vĩnh viễn. Đây là một dịch vụ tiện dụng dành cho bạn Tôi khuyên bạn nên tìm hiểu cách sử dụng, xin lưu ý rằng tôi vừa chọn một ảnh chụp nhanh tháng 9 năm 2015 của trang web drush.org web.archive.org/web/20150905130324/http://www.drush.org : 80 / en / Thẻ Tại thời điểm này, bạn cũng nên xem xét các công cụ mới hơn như Drupal Console hoặc Drush 9 docs.
tenken

24

Kết xuất tất cả các bảng trừ cachebảng và bảng bắt đầu bằng cache_.

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

Cấu trúc cơ sở dữ liệu duy nhất. Không có dữ liệu nào cả.

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

Chỉ thông tin. Không có dữ liệu bộ đệm và không có cấu trúc bộ đệm.

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

Không có dữ liệu bộ nhớ cache nhưng kết xuất trong cấu trúc của họ.

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

tài liệu sql-dump


Điều --extra=--no-datađó không làm việc cho tôi, nhưng tôi đã có thể làm --skip-tables-list="*"và điều đó đã làm việc.
chào đón

Bạn có thể muốn sử dụng dấu ngoặc kép, như "cache,cache_*"để ngăn vỏ của bạn khớp với các tệp được gọi cache_*trong thư mục làm việc của bạn.
rudolfbyker

0

Vì một số lý do, cache_ * không hoạt động với tôi với drush 9+ cho đến khi tôi bỏ qua dấu gạch dưới. Tuy nhiên, điều này có thể cụ thể đối với bash / terminal (máy chủ) của tôi. Điều gì làm việc cho tôi:

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

và bạn luôn có thể thêm --verboseđể xem kết xuất mysql thực tế và tham số --ignore.


Với bash, nếu cache_*khớp với bất kỳ tệp nào trong thư mục hiện tại của bạn thì bash sẽ đặt tên tệp đó và sử dụng làm đối số. Bạn có thể đặt dấu ngoặc kép xung quanh nó để đảm bảo giá trị bằng chữ được truyền cho lệnh thay vì bất kỳ tệp nào mà nó hiển thị.
chào đón
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.