it-swarm-es.com

¿Es posible restaurar un nodo eliminado?

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.

17
Palmin

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.

20
Chris Cohen

Lo que dice Chris El código lecturas

    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 anular la publicación de 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.

19
marcvangend

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 https://drupal.org/project/recover módulo, que monitorea
  • Usando https://drupal.org/project/entity_soft_delete módulo. 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
2
Sina Salek

Estoy.late, pero la respuesta es usar el módulo de copia de seguridad de la entidad https://www.drupal.org/project/entity_backup

0
Rajveer gangwar

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 tabla node, 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 al node_revisions mesa. 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.

0
squarecandy