it-swarm-ko.tech

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

개정판이 유지되고 노드의 이전 개정판으로 쉽게 돌아갈 수 있지만 사용자가 실제로 삭제 한 노드를 복원 할 수 있는지 궁금합니다.

17
Palmin

데이터베이스 백업이있는 경우 (필수;) 사이트의 이전 사본을 복원하여이를 검색 할 수 있습니다.

Drupal은 노드 삭제가 최종적이라는 확인 메시지를 사용자에게 명확하게 알려주고 확인 대화 상자가 있습니다.

20
Chris Cohen

크리스의 말. 코드 읽습니다

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

... 삭제는 실제로 삭제됨을 의미합니다.

이와 같은 사고를 방지하기 위해 사용자 권한을 제한하여 사용자가 삭제할 수는 없지만 노드를 게시 취소 만 할 수 있습니다. 게시되지 않은 노드는 사이트에 표시되지 않지만 (사이트가 올바르게 구축되었다고 가정) 데이터베이스에서 계속 사용할 수 있습니다.

19
marcvangend

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

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

나는 .late이지만 대답은 엔티티 백업 모듈을 사용하는 것입니다 https://www.drupal.org/project/entity_backup

0
Rajveer gangwar

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

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

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

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

0
squarecandy