È possibile ripristinare un nodo eliminato?


18

Mentre le revisioni vengono mantenute ed è facile tornare a una precedente revisione di un nodo, mi chiedevo se fosse possibile ripristinare un nodo che è stato veramente cancellato da un utente?

Risposte:


20

Se hai un backup del database (che dovresti;) puoi ripristinare una vecchia copia del sito e recuperarla in quel modo.

Drupal dà agli utenti un chiaro avvertimento che la cancellazione di un nodo è definitiva e c'è una finestra di conferma.


19

Cosa dice Chris. Il codice legge

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

... quindi cancellato significa davvero cancellato.

Per evitare incidenti come questo, potresti voler limitare le autorizzazioni utente in modo che gli utenti non possano eliminare, ma solo annullare la pubblicazione dei nodi. I nodi non pubblicati non verranno visualizzati sul tuo sito (presupponendo che il sito sia stato creato correttamente) ma rimangano disponibili nel database.


6
Suggerimento extra: per una scheda dedicata e un maggiore controllo su chi può
annullare la

2

Sì, ci sono diverse soluzioni per questo.

  • Il primo utilizza backup completi che è già stato menzionato da Chris qui. questo è il più difficile specialmente se il nodo contiene campi complessi.
  • Utilizzando il modulo https://drupal.org/project/recover , che monitora
  • Utilizzo del modulo https://drupal.org/project/entity_soft_delete . Ha creato una sorta di riciclo / cestino per nodi / entità, quindi quando un determinato nodo viene eliminato, non verrà rimosso dal database solo il suo stato cambierà in eliminato. In questo modo l'amministratore può ancora visualizzarlo o persino utilizzarlo e, se necessario, ripristinare il suo stato normale o eliminarlo definitivamente

0

Ecco un suggerimento basato su ciò che Chris ha detto che gli ingegneri inversi hanno risposto alla risposta di marcvangend. Mi piace usare phpMyAdmin, ma puoi fare lo stesso processo con la riga di comando se ti piace di più.

Come le altre risposte, questo presuppone che tu abbia un backup del tuo database. Nessuna scusa per non avere moduli fantastici come Backup & Migrate.

  1. Crea un nuovo database MySQL vuoto chiamato "restore" o "testing" o qualcosa di simile
  2. Crea un nuovo backup manuale in modo da poter tornare a questo momento, non il backup di ieri sera, se necessario
  3. Importa il tuo backup nel nuovo database "restore"
  4. Vai alla nodetabella, cerca il tuo nodo eliminato. Spero che tu conosca il nid, ma se non lo capisci ora.
  5. Seleziona una riga che è stata eliminata ed esporta tramite phpMyAdmin. Dovrebbe esserci solo una riga.
  6. Adesso vai al node_revisionstavolo. Cerca nel nid del nodo eliminato ed esporta. Dovrebbe esserci almeno una riga, ma potrebbe essercene di più. Esporta tutto con il tuo nid.
  7. Torna al database del tuo sito live in phpMyadmin
  8. Importa i due file appena esportati dal backup
  9. Controlla il tuo lavoro sul sito live

L'uso di questo metodo consentirà di ripristinare il singolo nodo dal backup senza perdere alcuna modifica al database dall'ultimo backup. Se non ti preoccupi di questo e non pensi altro che l'eliminazione è avvenuta dall'ultimo backup, sarebbe più semplice fare un ripristino completo dell'ultimo backup che deve essere sottoposto al processo sopra.


Cosa succede se vado al nodetavolo e non vedo il nid eliminato lì? Questo significa che le cose sembrano cupe? A proposito, il sito è Drupal 8.
MadPhysicist,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.