क्या हटाए गए नोड को पुनर्स्थापित करना संभव है?


18

जबकि संशोधन रखे गए हैं और नोड के पिछले संशोधन में वापस आना आसान है, मैं सोच रहा था कि क्या एक नोड को पुनर्स्थापित करना संभव है जो वास्तव में उपयोगकर्ता द्वारा हटा दिया गया है?

जवाबों:


20

यदि आपके पास एक डेटाबेस बैकअप है (जो आपको चाहिए;) आप साइट की एक पुरानी प्रतिलिपि को पुनर्स्थापित कर सकते हैं और इसे इस तरह से पुनः प्राप्त कर सकते हैं।

Drupal उपयोगकर्ताओं को काफी स्पष्ट चेतावनी देता है कि नोड को हटाना अंतिम है, और एक पुष्टिकरण संवाद है।


19

क्रिस क्या कहते हैं कोड पढ़ता है

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

... तो हटा दिया वास्तव में नष्ट कर दिया मतलब है।

इस तरह की दुर्घटनाओं को रोकने के लिए, आप उपयोगकर्ता अनुमतियों को प्रतिबंधित करना चाह सकते हैं ताकि उपयोगकर्ता हटा न सकें, लेकिन केवल अप्रकाशित नोड्स। अप्रकाशित नोड्स आपकी साइट पर दिखाई नहीं देंगे (यह मानते हुए कि आपकी साइट सही तरीके से निर्मित है), लेकिन वे डेटाबेस में उपलब्ध रहते हैं।


6
अतिरिक्त युक्ति: कौन, क्या अप्रकाशित कर सकते हैं सामग्री मॉड्यूल प्रकाशित की जाँच के ऊपर एक समर्पित टैब और अधिक नियंत्रण के लिए: drupal.org/project/publishcontent
marcvangend

2

हां इसके लिए कई उपाय हैं।

  • पहला बैकअप पूर्ण बैकअप का उपयोग कर रहा है जिसका उल्लेख क्रिस पहले ही कर चुका है। यदि नोड में जटिल क्षेत्र हैं, तो यह विशेष रूप से सबसे कठिन है।
  • Https://drupal.org/project/recover मॉड्यूल का उपयोग करना , जो मॉनिटर करता है
  • Https://drupal.org/project/entity_soft_delete मॉड्यूल का उपयोग करना । इसने नोड्स / संस्थाओं के लिए एक रीसायकल / ट्रैशबिन का निर्माण किया, ताकि जब एक विशेष नोड नष्ट हो जाए, तो इसे डेटाबेस से केवल हटाए जाने की स्थिति में ही नहीं हटाया जाएगा। इसलिए व्यवस्थापक अभी भी इसे देख या उपयोग कर सकते हैं और यदि आवश्यक हो तो इसकी स्थिति को सामान्य में बदल सकते हैं या इसे स्थायी रूप से हटा सकते हैं

0

यहाँ एक सुझाव निर्माण है जो क्रिस ने कहा कि रिवर्स इंजीनियर @ marcvangend का जवाब। मुझे phpMyAdmin का उपयोग करना पसंद है, लेकिन यदि आप इसे बेहतर पसंद करते हैं, तो आप कमांड लाइन के साथ भी यही प्रक्रिया कर सकते हैं।

अन्य उत्तरों की तरह, यह मानता है कि आपके पास अपने डेटाबेस का बैकअप है। बैकअप और माइग्रेट जैसे भयानक मॉड्यूल के साथ कोई बहाना नहीं।

  1. एक नया खाली MySQL डेटाबेस बनाएं जिसे "रिस्टोर" या "टेस्टिंग" या कुछ समान कहा जाता है
  2. एक नया मैनुअल बैकअप बनाएं ताकि आप इस पल में वापस लौट सकें, अगर आपको ज़रूरत हो तो कल रात का बैकअप नहीं
  3. अपने बैकअप को नए "रिस्टोर" डेटाबेस में आयात करें
  4. nodeतालिका में जाएं , अपने हटाए गए नोड की खोज करें। उम्मीद है कि आप nid को जानते होंगे, लेकिन अगर आप अभी इसका पता नहीं लगाते हैं।
  5. उस एक पंक्ति का चयन करें जिसे हटा दिया गया था और phpMyAdmin के माध्यम से निर्यात करें। बस एक पंक्ति होनी चाहिए।
  6. अब node_revisionsटेबल पर जाएं। अपने हटाए गए नोड और निर्यात की nid पर खोजें। कम से कम एक पंक्ति होनी चाहिए, लेकिन अधिक हो सकती है। अपने nid के साथ सब कुछ निर्यात करें।
  7. PhpMyadmin में अपनी लाइव साइट के डेटाबेस पर वापस जाएं
  8. उन दो फ़ाइलों को आयात करें जिन्हें आपने बैकअप से निर्यात किया है
  9. लाइव साइट पर अपने काम की जाँच करें

इस पद्धति का उपयोग करने से आप अंतिम बैकअप के बाद डेटाबेस में किसी भी बदलाव को खोए बिना बैकअप से एकल नोड को पुनर्स्थापित करने की अनुमति देंगे। यदि आप इस बारे में चिंतित नहीं हैं और आप कुछ भी नहीं सोचते हैं, लेकिन अंतिम बैकअप के बाद से विलोपन हो गया है, तो अंतिम बैकअप का पूर्ण पुनर्स्थापना करना आसान होगा जो ऊपर की प्रक्रिया से गुजरना है।


क्या होगा अगर मैं nodeटेबल पर जाऊं और वहां डिलीट की गई एनआईडी न देखूं? क्या इसका मतलब यह है कि चीजें गंभीर हैं? साइट Drupal 8 है, वैसे।
मादफिसिस्ट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.