GNU/Linux >> Linux の 問題 >  >> Linux

Unix/Linux 削除されたファイルの復元/回復

誰かがコメントで提供したリンクは、おそらくあなたの最高のチャンスです.

Linux debugfs ハック:ファイルの削除を取り消す

少し威圧的に見えますが、その記事は実際にはかなり簡単です。一般的な手順は次のとおりです。

<オール>
  • debugfs を使用してファイルシステムのログを表示する

    $ debugfs -w /dev/mapper/wks01-root
    
  • debugfs プロンプトで

    debugfs: lsdel
    
  • サンプル出力

    Inode  Owner  Mode    Size    Blocks   Time deleted
    23601299      0 120777      3    1/   1 Tue Mar 13 16:17:30 2012
    7536655      0 120777      3    1/   1 Tue May  1 06:21:22 2012
    2 deleted inodes found.
    
  • debugfs でコマンドを実行

    debugfs: logdump -i <7536655>
    
  • ファイルの inode を決定

    ...
    ...
    ....
    output truncated
        Fast_link_dest: bin
        Blocks:  (0+1): 7235938
      FS block 7536642 logged at sequence 38402086, journal block 26711
        (inode block for inode 7536655):
        Inode: 7536655   Type: symlink        Mode:  0777   Flags: 0x0   Generation: 3532221116
        User:     0   Group:     0   Size: 3
        File ACL: 0    Directory ACL: 0
        Links: 0   Blockcount: 0
        Fragment:  Address: 0    Number: 0    Size: 0
        ctime: 0x4f9fc732 -- Tue May  1 06:21:22 2012
        atime: 0x4f9fc730 -- Tue May  1 06:21:20 2012
        mtime: 0x4f9fc72f -- Tue May  1 06:21:19 2012
        dtime: 0x4f9fc732 -- Tue May  1 06:21:22 2012
        Fast_link_dest: bin
        Blocks:  (0+1): 7235938
    No magic number at block 28053: end of journal.
    
  • 上記の inode 情報を使用して、次のコマンドを実行します

    # dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
    # file recovered.file.001
    file: ASCII text, with very long lines
    
  • ファイルは recovered.file.001 に復元されました .

    その他のオプション

    上記があなたのためではない場合、私は photorec などのツールを使用しました 過去にファイルを回復するために使用されますが、画像ファイルのみを対象としています。この方法については、次のタイトルの記事でブログに詳しく書いています:

    Fedora/CentOS/RHEL でデジタル カメラの SDD カードから破損した jpeg および mov ファイルを復元する方法。


    少しのチャンスですが、このスクリプトまたは回答の次の解決策を使用して、削除されたファイルを復元できる場合があります:

    #!/bin/bash
    
    if [[ ! $1 ]]; then
        echo -e "Usage:\n\n\t$0 'file name'"
        exit 1
    fi
    
    f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
    
    if [[ $f ]]; then
        echo "fd $f found..."
        cp -v "$f" "$1"
    else
        echo >&2 "No fd found..."
        exit 2
    fi
    

    もう 1 つの便利なトリックがあります。削除したファイルのパターンがわかっている場合は、alt と入力します。 +sys +回答 読み取り専用で再起動して再マウントするには、ライブ CD で grep を使用します ハードドライブを検索するには:

    grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
    

    次に /tmp/recover を編集します 以前のファイルのみを保持します。

    UNIX の哲学ですべてがファイルである場合、これを利用する時が来ましたね。


    私にとってうまくいったのは、アーチによって与えられたものです(テキストファイルにのみ適用されます):

    grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
    

    どこで /dev/sdXN 失われたファイルを含むパーティションです (mount で確認してください) わからない場合)。

    少し時間がかかりますが、まだコミットしていないソース コードを誤って削除してしまったときにうまくいきました!


    Linux
    1. Linuxでmvなしでファイルを移動する

    2. Linuxで削除されたファイルを回復する方法

    3. Linux/Unix では、.tar.gz と .zip はどちらが重要ですか?

    1. 削除されたファイルを回復しますか?

    2. Linux / UNIX でファイルを管理する 10 の Cat コマンドの例

    3. ext4 パーティションからファイルを復元/復元するにはどうすればよいですか?

    1. Linuxでのファイルのコピー

    2. Linuxで削除されたファイルを回復する方法[初心者向けガイド]

    3. Linuxで削除されたファイルを回復する方法