undelete 1 arquivo do ext4 no LVM no LUKS

0

resumo

Como (de forma relativamente indolor e confiável) {restaurar, undelete} um arquivo de um sistema de arquivos ext4 dentro de um volume LVM dentro de um contêiner LUKS, dado que se conhece o caminho completo para o arquivo antes de ser deletado? (Desculpas antecipadas se eu estiver usando termos incorretos - por favor, corrija onde for necessário).

detalhes

A boa notícia é que faz anos que eu acidentalmente excluí um arquivo que não era possível restaurar facilmente (por exemplo, de backup). Defina alguns termos para exatidão:

  • chame o arquivo que eu {deletei, procuro restaurar} o target file
  • chame o diretório / pasta em que o arquivo de destino anteriormente residia o target dir
  • chame a partição {na qual o arquivo de destino anteriormente residia, ao qual eu procuro restaurar o arquivo de destino} target partition

A má notícia é que

  • Na última vez, a partição de destino era "simples ext4", ou seja, sem criptografia ou outro gerenciamento.
  • Desta vez, a partição de destino é aquela com nome = LVM2_crypt-home da seguinte lsblk table:

    NAME                  MAJ:MIN   SIZE  TYPE  MOUNTPOINT
    sda                     8:0   465.8G  disk
    ├─sda1                  8:1    16.6G  part
    ├─sda2                  8:2    97.7G  part
    ├─sda3                  8:3     500M  part  /boot
    ├─sda4                  8:4       1K  part
    └─sda5                  8:5     351G  part
      └─LVM2_crypt        254:0     351G  crypt
        ├─LVM2_crypt-swap 254:1     3.9G  lvm
        ├─LVM2_crypt-root 254:2      20G  lvm   /
        └─LVM2_crypt-home 254:3   327.1G  lvm   /home
    

Eu acredito que lembro como recuperar um arquivo de uma partição simples usando o extundelete : veja o procedimento abaixo. O que eu gostaria de saber é

  1. O mesmo procedimento ou procedimento semelhante funcionará para uma partição gerenciada + criptografada? Se não for o mesmo, o que precisa ser adicionado, modificado ou excluído?
  2. Existe uma ferramenta mais confiável (que extundelete ) para este uso? Em caso afirmativo, qual é o procedimento para este uso?

procedimento de partição simples

Meu procedimento da última vez - para a partição "simples" do ext4 - use extundelete como o exemplo a seguir (bash):

  1. Leia o documento extundelete do info extundelete (e também muito pequeno) (role para baixo até o título = Documentation ). Observe que ele pode lidar com casos diferentes dos ilustrados aqui, por exemplo, restaurar todos arquivos excluídos de uma partição.
  2. Especifique o arquivo de destino:

    1. defina seu caminho completo TARGET_FQP , lembrando não para usar ~ :

      # CHANGE FOR YOUR USECASE!
      TARGET_FQP="${HOME}/video/greatest_movie_ever.mp4"
      echo "TARGET_FQP='${TARGET_FQP}'"
      
    2. defina seu diretório / pasta (que nós assumimos estar na mesma partição (destino) que o arquivo de destino):

      TARGET_DIR="$(dirname "${TARGET_FQP}")"
      echo "TARGET_DIR='${TARGET_DIR}'"
      
    3. defina seu nome de arquivo (para uso abaixo)

      TARGET_FN="$(basename "${TARGET_FQP}")"
      echo "TARGET_FN='${TARGET_FN}'"
      
  3. Identifique a partição de destino TARGET_PART e seu ponto de montagem TARGET_MP do seu diretório de destino:

    TARGET_PART="$(df --output=source "${TARGET_FQP}" | tail -1)"
    echo "TARGET_PART='${TARGET_PART}'"
    TARGET_MP="$(df --output=target "${TARGET_FQP}" | tail -1)"
    echo "TARGET_MP='${TARGET_MP}'"
    
  4. Abra o seu shell de escolha (no seu terminal de escolha) com um diretório de trabalho atual (CWD) tal que

    • O CWD está em uma partição diferente do destino. (Obtenha informações sobre suas partições usando lsblk , fdisk ou sua ferramenta de escolha.)
    • extundelete irá restaurar qualquer arquivo que encontrar (se houver) para um nome de subdiretório CWD = RECOVERED_FILES , então estou supondo que, se você já tiver um com esse nome, você deseja movê-lo. (Se você sabe como anular isso, por favor deixe-me saber. IIRC, --restore-directory não não faça isso.)
  5. Remontar a partição de destino como somente leitura:

    mount --options remount,ro --source "${TARGET_PART}"
    
  6. Executar extundelete :

    date # because if this runs too long, you'll wanna give up
    extundelete --restore-file "${TARGET_FQP}" "${TARGET_PART}"
    
  7. Verifique o arquivo restaurado:

    SAVED_RELPATH="./RECOVERED_FILES/${TARGET_FN}"
    echo '(hopefully) restored file @'
    ls -al "${SAVED_RELPATH}"
    
  8. Supondo que o arquivo restaurado @ SAVED_RELPATH é o que você quer, você pode remontar TARGET_PART leitura / gravação e movê-lo para lá, ou (o que eu costumo fazer)

    1. mova o arquivo restaurado para um backup externo
    2. reinicialize o PC contendo TARGET_PART
    3. copie o arquivo restaurado do backup para TARGET_DIR

Suas correções ou melhorias são bem-vindas.

    
por TomRoche 19.09.2017 / 05:14

0 respostas