삭제 된 노드를 복원 할 수 있습니까?


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
추가 팁 : 전용 탭과 누가 무엇을 게시 취소
marcvangend

2

예, 이에 대한 몇 가지 솔루션이 있습니다.

  • 첫 번째는 Chris가 이미 언급 한 전체 백업을 사용하는 것입니다. 노드에 복잡한 필드가 포함 된 경우 특히 가장 어려운 방법입니다.
  • 모니터하는 https://drupal.org/project/recover 모듈 사용
  • https://drupal.org/project/entity_soft_delete 모듈 사용 노드 / 엔티티에 대해 일종의 리사이클 / 휴지통을 만들었으므로 특정 노드가 삭제 될 때 데이터베이스에서 상태가 삭제 된 상태로만 제거되지는 않습니다. 따라서 관리자는 계속 보거나 사용할 수 있으며 필요한 경우 상태를 다시 정상으로 변경하거나 영구적으로 삭제할 수 있습니다

0

다음은 Chris가 리버스 엔지니어 @marcvangend의 답변에 대해 제안한 제안입니다. phpMyAdmin을 사용하고 싶지만 더 좋아한다면 명령 줄에서도 동일한 프로세스를 수행 할 수 있습니다.

다른 답변과 마찬가지로 데이터베이스 백업이 있다고 가정합니다. Backup & Migrate와 같은 멋진 모듈을 사용하지 않아도됩니다.

  1. "복원"또는 "테스트 중"또는 이와 유사한 새로운 빈 MySQL 데이터베이스를 만듭니다.
  2. 새로운 수동 백업을 생성하여 필요한 경우 지난 밤 백업이 아닌이 순간으로 되돌릴 수 있습니다.
  3. 백업을 새로운 "복원"데이터베이스로 가져 오기
  4. node테이블로 이동 하여 삭제 된 노드를 검색하십시오. 바라건대 당신은 nid를 알고 있지만, 지금 이해하지 못한다면.
  5. phpMyAdmin을 통해 삭제 된 한 행을 선택하고 내 보냅니다. 행이 하나만 있어야합니다.
  6. 이제 node_revisions테이블 로 가십시오 . 삭제 된 노드에서 검색하여 내보내십시오. 행이 하나 이상 있어야하지만 더 많을 수 있습니다. 당신의 nid로 모든 것을 내 보냅니다.
  7. phpMyadmin에서 라이브 사이트 데이터베이스로 돌아갑니다.
  8. 백업에서 방금 내 보낸 두 파일 가져 오기
  9. 라이브 사이트에서 작업 확인

이 방법을 사용하면 마지막 백업 이후 데이터베이스에 대한 변경 사항을 잃지 않고 백업에서 단일 노드를 복원 할 수 있습니다. 그것에 대해 걱정하지 않고 마지막 백업 이후 삭제가 발생했다고 생각하지 않는다면 위의 프로세스를 수행하기 위해 마지막 백업의 전체 복원을 수행하는 것이 더 쉬울 것입니다.


node테이블 로 이동 한 후 삭제 된 nid가 표시되지 않으면 어떻게합니까? 이것은 상황이 어둡게 보이는 것을 의미합니까? 그런데 사이트는 Drupal 8입니다.
MadPhysicist

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.