¿Es posible restaurar un nodo eliminado?

18

Mientras se mantienen las revisiones y es fácil volver a una revisión anterior de un nodo, me preguntaba si es posible restaurar un nodo que realmente haya sido eliminado por un usuario.

Palmin
fuente

Respuestas:

20

Si tiene una copia de seguridad de la base de datos (que debería;) puede restaurar una copia antigua del sitio y recuperarla de esa manera.

Drupal les da a los usuarios una advertencia bastante clara de que eliminar un nodo es final, y hay un diálogo de confirmación.

Chris Cohen
fuente
19

Lo que dice Chris. El código lee

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

... así que eliminado realmente significa eliminado.

Para evitar accidentes como este, es posible que desee restringir los permisos de los usuarios para que los usuarios no puedan eliminar, sino solo no publicar nodos. Los nodos no publicados no aparecerán en su sitio (suponiendo que su sitio esté construido correctamente) pero permanecen disponibles en la base de datos.

marcvangend
fuente
66
Consejo adicional: para una pestaña dedicada y más control sobre quién puede publicar lo que no, consulte el módulo Publicar contenido: drupal.org/project/publishcontent
marcvangend
2

Sí, hay varias soluciones para esto.

  • El primero es usar copias de seguridad completas que Chris ya ha mencionado aquí. Este es el más difícil, especialmente si el nodo contiene campos complejos.
  • Usando el módulo https://drupal.org/project/recover , que monitorea
  • Usando el módulo https://drupal.org/project/entity_soft_delete . Creó una especie de reciclaje / papelera para nodos / entidades, por lo que cuando se elimina un nodo en particular, no se eliminará de la base de datos, solo su estado cambia a eliminado. Por lo tanto, el administrador aún puede verlo o incluso usarlo y, si es necesario, cambiar su estado a normal o eliminarlo permanentemente
Sina Salek
fuente
0

Aquí hay una sugerencia basada en lo que Chris dijo que la respuesta de los ingenieros inversos @ marcvangend. Me gusta usar phpMyAdmin, pero puedes hacer este mismo proceso con la línea de comando si te gusta más.

Al igual que las otras respuestas, esto supone que tiene una copia de seguridad de su base de datos. No hay excusa para no hacerlo con increíbles módulos como Backup & Migrate.

  1. Cree una nueva base de datos MySQL vacía llamada "restaurar" o "probar" o algo similar
  2. Cree una nueva copia de seguridad manual para que pueda volver a este momento, no la copia de seguridad de anoche si necesita
  3. Importe su copia de seguridad a la nueva base de datos "restaurar"
  4. Vaya a la nodetabla, busque su nodo eliminado. Espero que sepas el nid, pero si no lo sabes ahora.
  5. Seleccione la fila que se eliminó y exporte a través de phpMyAdmin. Debería haber solo una fila.
  6. Ahora ve a la node_revisionsmesa. Busque en el nid de su nodo eliminado y exporte. Debería haber al menos una fila, pero podría haber más. Exporta todo con tu nid.
  7. Regrese a la base de datos de su sitio en vivo en phpMyadmin
  8. Importe los dos archivos que acaba de exportar desde la copia de seguridad
  9. Comprueba tu trabajo en el sitio en vivo

El uso de este método le permitirá restaurar el nodo único de la copia de seguridad sin perder ningún cambio en la base de datos desde la última copia de seguridad. Si no está preocupado por eso y no piensa nada más que la eliminación se ha producido desde la última copia de seguridad, sería más fácil hacer una restauración completa de la última copia de seguridad que se someterá al proceso anterior.

Squarecandy
fuente
¿Qué nodesucede si voy a la tabla y no veo el nid eliminado allí? ¿Esto significa que las cosas se ven sombrías? El sitio es Drupal 8, por cierto.
MadPhysicist