Silinmiş bir düğümü geri yüklemek mümkün müdür?


18

Düzeltmeler tutulur ve bir düğümün önceki bir revizyonuna geri dönmek kolay olsa da, bir kullanıcı tarafından gerçekten silinen bir düğümü geri yüklemenin mümkün olup olmadığını merak ediyordum?

Yanıtlar:


20

Bir veritabanı yedeklemeniz varsa (ki yapmanız gerekir;) sitenin eski bir kopyasını geri yükleyebilir ve bu şekilde alabilirsiniz.

Drupal, kullanıcılara bir düğümü silmenin kesin olduğuna dair net bir uyarı verir ve bir onay iletişim kutusu vardır.


19

Chris ne diyor. Kod okuyor

    db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
    db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);

... yani silindi gerçekten silinmiş demektir.

Bunun gibi kazaları önlemek için, kullanıcıların izinleri silmesi değil, yalnızca düğümleri yayından kaldırması için kullanıcı izinlerini kısıtlamak isteyebilirsiniz. Yayınlanmamış düğümler sitenizde görünmez (sitenizin doğru oluşturulduğu varsayılarak), ancak veritabanında kullanılabilir kalır.


6
Ek ipucu: özel bir sekme ve kimin neyi yayından kaldırabileceği konusunda daha fazla kontrol için İçerik Yayınlama modülüne bakın: drupal.org/project/publishcontent
marcvangend

2

Evet, bunun için birkaç çözüm var.

  • Birincisi, Chris tarafından burada belirtilmiş olan tam yedeklemeleri kullanıyor. bu özellikle düğüm karmaşık alanlar içeriyorsa en zor olanıdır.
  • İzleyen https://drupal.org/project/recover modülünü kullanma
  • Https://drupal.org/project/entity_soft_delete modülünü kullanma . Düğümler / varlıklar için bir tür geri dönüşüm / çöp kutusu oluşturduğundan belirli bir düğüm silindiğinde, veritabanından yalnızca durumu silinir. Böylece yönetici yine de görebilir ve hatta kullanabilir ve gerekirse durumunu normale döndürür veya kalıcı olarak silebilir

0

İşte Chris'in ters mühendislerin @ marcvangend'in cevabına söylediklerine dair bir öneri. Ben phpMyAdmin kullanmak istiyorum, ama daha iyi isterseniz aynı işlemi komut satırı ile yapabilirsiniz.

Diğer yanıtlar gibi, bu da veritabanınızın yedeğine sahip olduğunuzu varsayar. Orada Backup & Migrate gibi harika modüller ile değil mazeret.

  1. "Restore" veya "test" veya benzeri bir adla yeni bir boş MySQL veritabanı oluşturun
  2. Gerekirse dün gecenin yedeğini değil, bu ana geri dönebilmeniz için yeni bir manuel yedekleme oluşturun
  3. Yedeğinizi yeni "geri yükleme" veritabanına aktarın
  4. Tabloya gidin node, silinmiş düğümü arayın. Umarım nid'i bilirsin, ama şimdi çözemezsen.
  5. Silinen bir satırı seçin ve phpMyAdmin ile dışa aktarın. Sadece bir satır olmalı.
  6. Şimdi node_revisionsmasaya git. Silinen düğümünüzün nid'inde arama yapın ve dışa aktarın. En az bir satır olmalı, ancak daha fazla olabilir. NID ile her şeyi dışa aktarın.
  7. PhpMyadmin'de canlı sitenizin veritabanına geri dönün
  8. Yedeklemeden yeni aktardığınız iki dosyayı içe aktarın
  9. Canlı sitede çalışmanızı kontrol edin

Bu yöntemi kullanmak, son yedeklemeden bu yana veritabanında herhangi bir değişiklik yapmadan tek düğümü yedeklemeden geri yüklemenizi sağlar. Bu konuda endişelenmiyorsanız ve son yedeklemeden bu yana silme işlemi gerçekleştiğini düşünmüyorsanız, yukarıdaki işlemden geçecek son yedeklemenin tam bir geri yüklemesini yapmak daha kolay olacaktır.


nodeTabloya gidersem ve orada silinen boşluğu görmezsem ne olur ? Bu şeyler korkunç görünüyor mu? Bu arada site Drupal 8'dir.
MadPhysicist

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.