Nasıl drush sql-dump ile belirli tabloları atlamak için?


9

Bir drush yapılandırma dosyası var ~ / .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')
);

Ve bir bash komut dosyası var:

/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

Ama yürüttüğümde yedek dosya önbellek tablolarında hala veri var. Neyi yanlış yapıyorum?

Ve ikinci soru - Bunu crontab'a koyarsam, yapılandırma dosyasını başka bir yere koymam gerekir mi?

Drush sürüm 8 kullanıyorum.


1
Acaba koşulmuyor mu drushrc.php? Çalıştırıldığını onaylamak için $options['structure-tables']in içindeki bir var_dump komutunu deneyin drushrc.php.
cleaver

Yanıtlar:


0

Üzgünüm ilk sorunuzda size çok yardımcı olamıyorum ...

2. sorunuz sordu:

Ve ikinci soru - Bunu crontab'a koyarsam, yapılandırma dosyasını başka bir yere koymam gerekir mi?

Drushrc.php örnek dosyasına drush dokümantasyon site bağlantıları size rc dosyasını yerleştirmek nerede diyor ki:

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

Bu dosyayı drushrc.php olarak yeniden adlandırın ve isteğe bağlı olarak öncelik sırasına göre aşağıda listelenen yerlerden birine kopyalayın:

  1. Drupal site klasörü (ör. Sites / {default | example.com} /drushrc.php).
  2. Drupal / drush ve sites / all / drush klasörleri veya Drupal kökünün üstündeki dizindeki / drush klasörü.
  3. --Config (-c) seçeneği tarafından belirtilen herhangi bir konumda.
  4. Kullanıcının .drush klasörü (yani ~ / .drush / drushrc.php).
  5. Sistem geneli yapılandırma klasörü (ör. /Etc/drush/drushrc.php).
  6. Kurulum klasörünü sıkıştırın.

Cron için belgeler , Drush'ın web sunucunuzu çalıştıran kullanıcıyla çalışacak şekilde yapılandırılmasını önerir . Bu, rc dosyanızı sistem çapında bir yapılandırma klasörü olan konuma (5) yerleştirmenizi öneririm. Evet, daha yerelleştirilmiş Drush rc dosyalarının sistem genelindeki yapılandırma dosyanızı gerektiğinde geçersiz kılması gerekir (iyi).


Tüm bu bağlantılar şimdi 404'tür. :(
Dale Anderson

@DaleAnderson ... bu internet ve hiçbir şey kalıcı değil. İşte size nasıl kullanacağınızı öğrenmenizi tavsiye ettiğim kullanışlı bir hizmet, lütfen drush.org sitesinin web.archive.org/web/20150905130324/http://www.drush.org adresinin Eylül 2015 anlık görüntüsünü seçtim: 80 / tr /… Şu anda Drupal Konsol veya Drush 9 belgeleri gibi daha yeni araçlara bakmayı da düşünmelisiniz.
tenken

24

cacheTablo ve tablolar dışındaki tüm tabloları boşaltın cache_.

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

Yalnızca veritabanı yapısı. Hiç veri yok.

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

Yalnızca veri. Önbellek verisi ve önbellek yapısı yok.

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

Önbellek verisi yok ancak yapılarına dökülüyor.

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

sql-dump belgeleri


--extra=--no-dataBenim için çalışma değildi, ama yapmam başardı --skip-tables-list="*"ve o çalıştı.
greggles

"cache,cache_*"Kabuğunuzun cache_*çalışma dizininizde çağrılan dosyalarla eşleşmesini önlemek gibi tırnak işareti kullanmak isteyebilirsiniz .
rudolfbyker

0

Herhangi bir nedenle cache_ * alt çizgiyi atlayana kadar drush 9+ ile benim için çalışmadı. Ancak, bu benim (sunucu) bash / terminalime özgü olabilir. Benim için ne işe yaradı:

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

ve her zaman --verbosegerçek mysql dökümü ve --ignore parametresini görmek için ekleyebilirsiniz .


Bash ile, cache_*geçerli dizininizdeki herhangi bir dosyayla eşleşirse, bash bu dosya adlarını toplar ve bunu argüman olarak kullanır. Değişmez değerin taşıdığı dosyalar yerine komuta iletildiğinden emin olmak için çevresine çift tırnak işareti koyabilirsiniz.
greggles
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.