LUKSのLVMからext4のファイルを1つ取り消す

LUKSのLVMからext4のファイルを1つ取り消す

一般化する

ファイルが削除される前にファイルの完全修飾パスがわかっている場合は、LUKSコンテナ内のLVMボリューム内のext4ファイルシステム内のファイルを(比較的簡単かつ確実に){回復、削除解除}するのですか? (間違った用語を使用した場合は事前にお詫び申し上げます。必要に応じて修正してください。)

詳細

良いニュースは、簡単に復元できないファイル(バックアップなど)が誤って削除されてから数年が経ちました。いくつかの精度用語を定義します。

  • 私のファイルに電話してください。 {削除済み、回復リクエスト}target file
  • 以前にターゲットファイルがあったディレクトリ/フォルダを呼び出します。target dir
  • 呼び出しパーティション{ターゲットファイルがあった場所とターゲットファイルを復元しようとしている場所}target partition

悪いニュースは、

  • 前回は対象パーティションが「単純ext4」でした。つまり、暗号化やその他の管理はありませんでした。
  • LVM2_crypt-home今回のターゲットパーティションは、次の表で名前が=のパーティションですlsblk

    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
    

次のコマンドを使用して単純なパーティションからファイルを回復する方法を覚えているようです。拡張を削除:以下の手順を参照してください。私が知りたいことは

  1. 管理+暗号化パーティションに対して同じまたは類似のプロセスが機能しますか?そうでない場合は、何を追加、編集、削除する必要がありますか?
  2. extundeleteこのユースケースに対して(より)信頼性の高いツールはありますか?それでは、このユースケースの手順は何ですか?

簡単なパーティショニングプロセス

私の最後の手順 - 「簡単な」ext4パーティションの場合 -extundelete次の(bash)例を使用しました。

  1. 読書info extundeleteと(とても貧弱)文書削除の拡張(タイトル=までスクロールダウンDocumentation)。回復など、ここに示されているもの以外のユースケースも処理できます。みんなパーティションからファイルを削除します。
  2. 宛先ファイルの指定:

    1. 正規化されたパスを定義してTARGET_FQP覚えておいてください。いいえ使用~:

      # CHANGE FOR YOUR USECASE!
      TARGET_FQP="${HOME}/video/greatest_movie_ever.mp4"
      echo "TARGET_FQP='${TARGET_FQP}'"
      
    2. ディレクトリ/フォルダを定義します(ターゲットファイルと同じ(ターゲット)パーティションにあるとします)。

      TARGET_DIR="$(dirname "${TARGET_FQP}")"
      echo "TARGET_DIR='${TARGET_DIR}'"
      
    3. ファイル名の定義(以下を使用)

      TARGET_FN="$(basename "${TARGET_FQP}")"
      echo "TARGET_FN='${TARGET_FN}'"
      
  3. ターゲットディレクトリ内のターゲットパーティションTARGET_PARTとそのマウントポイントを識別します。TARGET_MP

    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. 現在の作業ディレクトリ(CWD)を使用して、目的の端末で目的のシェルを開きます。

    • CWD がターゲット以外のパーティションにあります。 (パーティションに関する情報を取得するには、必要なツールを使用してください。lsblkfdisk
    • extundelete見つかったすべてのファイル(存在する場合)をCWDサブディレクトリname =に復元するので、RECOVERED_FILESその名前のファイルが既に存在する場合はそのファイルを移動したいと思います。 (再定義する方法をご存知でしたら教えてください。IIRC、--restore-directory実際にいいえこれを行います。 )
  5. ターゲットパーティションを読み取り専用で再マウントします。

    mount --options remount,ro --source "${TARGET_PART}"
    
  6. ランニングextundelete:

    date # because if this runs too long, you'll wanna give up
    extundelete --restore-file "${TARGET_FQP}" "${TARGET_PART}"
    
  7. 修復されたファイルを確認してください。

    SAVED_RELPATH="./RECOVERED_FILES/${TARGET_FN}"
    echo '(hopefully) restored file @'
    ls -al "${SAVED_RELPATH}"
    
  8. 回復された file@ が必要なSAVED_RELPATHものであると仮定すると、TARGET_PART読み書きを再マウントしてそこに移動できます。または(通常はそうします)

    1. 復元されたファイルを外部バックアップに移動する
    2. 次に、PCを再起動してください。TARGET_PART
    3. 回復したファイルをバックアップから次にコピーします。TARGET_DIR

あなたの修正や改善を歓迎します。

関連情報