it-swarm-eu.dev

Je možné obnovit smazaný uzel?

Zatímco revize jsou udržovány a je snadné se vrátit k předchozí revizi uzlu, přemýšlel jsem, jestli je možné obnovit uzel, který byl skutečně uživatelem vymazán?

18
Palmin

Pokud máte zálohu databáze (kterou byste měli;), můžete obnovit starou kopii webu a získat ji tímto způsobem.

Drupal dává uživatelům zcela jasné varování, že smazání uzlu je konečné a je zde potvrzovací dialog.

20
Chris Cohen

Co říká Chris. Kód přečte

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

... takže smazaný ve skutečnosti znamená smazaný.

Chcete-li zabránit takovým nehodám, můžete chtít omezit uživatelská oprávnění, aby uživatelé nemohli mazat, ale pouze zrušit publikování uzlů. Nepublikované uzly se na vašem webu nebudou zobrazovat (za předpokladu, že je váš web vytvořen správně), ale zůstanou dostupné v databázi.

19
marcvangend

Ano, existuje několik řešení.

  • První z nich používá plné zálohy, které zde již Chris zmínil. toto je nejobtížnější, zvláště pokud uzel obsahuje složitá pole.
  • Pomocí modulu https://drupal.org/project/recover , který monitoruje
  • Pomocí modulu https://drupal.org/project/entity_soft_delete . Vytvořil jakýsi druh recyklace/trashbin pro uzly/entity, takže když bude konkrétní uzel odstraněn, nebude odstraněn z databáze, pouze jeho stav se změní na smazaný. Správce je tedy může stále vidět nebo dokonce používat a v případě potřeby změnit svůj stav zpět na normální nebo trvale smazat
2
Sina Salek

Jsem.late, ale odpověď je použít záložní modul entity https://www.drupal.org/project/entity_backup

0
Rajveer gangwar

Zde je návrh navazující na to, co Chris řekl, že reverzní inženýři @ marcvangend odpověď. Rád používám phpMyAdmin, ale stejný postup můžete provést s příkazovým řádkem, pokud se vám to bude líbit.

Stejně jako ostatní odpovědi se předpokládá, že máte zálohu své databáze. Žádná omluva s úžasnými moduly jako Backup & Migrate venku.

  1. Vytvořte novou prázdnou databázi MySQL s názvem „obnovit“ nebo „testování“ nebo něco podobného
  2. Vytvořte novou manuální zálohu, abyste se mohli vrátit k této chvíli, ne k záloze z minulé noci, pokud potřebujete
  3. Importujte zálohu do nové databáze pro obnovení
  4. Přejděte do tabulky node a vyhledejte smazaný uzel. Doufejme, že znáš nid, ale pokud to teď nepoznáš.
  5. Vyberte jeden řádek, který byl odstraněn a exportujte pomocí phpMyAdmin. Měla by existovat pouze jedna řada.
  6. Nyní přejděte na stránku node_revisions stůl. Vyhledejte nid odstraněného uzlu a exportujte. Měl by být alespoň jeden řádek, ale mohlo by jich být více. Exportujte vše se svým nid.
  7. Vraťte se zpět do databáze vašeho živého webu v phpMyadmin
  8. Importujte dva soubory, které jste právě exportovali ze zálohy
  9. Zkontrolujte svou práci na živém webu

Pomocí této metody budete moci obnovit jediný uzel ze zálohy, aniž byste ztratili jakékoli změny v databázi od poslední zálohy. Pokud vás to nezajímá a nemyslíte si, že k odstranění došlo od poslední zálohy, bylo by jednodušší provést úplnou obnovu poslední zálohy, která se má podrobit výše uvedenému postupu.

0
squarecandy