GNU/Linux >> Belajar Linux >  >> Linux

Unix/Linux membatalkan penghapusan/memulihkan file yang dihapus

Tautan yang diberikan seseorang di komentar kemungkinan merupakan peluang terbaik Anda.

Peretasan debugf Linux:Membatalkan Penghapusan File

Tulisan itu meskipun terlihat sedikit mengintimidasi sebenarnya cukup mudah untuk diikuti. Secara umum langkah-langkahnya adalah sebagai berikut:

  1. Gunakan debugfs untuk melihat log sistem file

    $ debugfs -w /dev/mapper/wks01-root
    
  2. Di prompt debugfs

    debugfs: lsdel
    
  3. Keluaran sampel

    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.
    
  4. Jalankan perintah di debugfs

    debugfs: logdump -i <7536655>
    
  5. Tentukan file 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.
    
  6. Dengan info inode di atas, jalankan perintah berikut

    # 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
    

File telah dipulihkan ke recovered.file.001 .

Opsi lain

Jika hal di atas bukan untuk Anda, saya telah menggunakan alat seperti photorec untuk memulihkan file di masa lalu, tetapi ini ditujukan hanya untuk file gambar. Saya telah menulis tentang metode ini secara ekstensif di blog saya dalam artikel berjudul:

Cara Memulihkan File jpeg dan mov yang Rusak dari Kartu SDD Kamera Digital di Fedora/CentOS/RHEL.


Dengan sedikit peluang, terkadang saya dapat memulihkan file yang terhapus dengan skrip ini atau solusi berikutnya dalam jawaban :

#!/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

Ada trik berguna lainnya:jika Anda mengetahui pola pada file yang dihapus, ketikkan alt +sys +resuo untuk reboot+remount dalam read-only, lalu dengan live-cd, gunakan grep untuk mencari di hard-drive :

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

lalu edit /tmp/recover untuk hanya menyimpan file Anda sebelumnya.

Hei, jika dengan filosofi unix semuanya adalah file, saatnya memanfaatkan ini, bukan?


Apa yang berhasil bagi saya diberikan oleh arch (hanya berlaku untuk file teks):

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

di mana /dev/sdXN adalah partisi yang berisi file yang hilang (periksa dengan mount jika tidak yakin).

Butuh beberapa saat, tetapi berhasil ketika saya tidak sengaja menghapus beberapa kode sumber yang belum saya lakukan!


Linux
  1. Memindahkan file di Linux tanpa mv

  2. Di Linux/Unix, apakah .tar.gz versus .zip penting?

  3. Bagaimana saya bisa memulihkan/membatalkan penghapusan file dari partisi ext4?

  1. Cara Memulihkan File yang Dihapus di Linux

  2. Pulihkan File yang Dihapus??

  3. 10 Contoh Perintah Cat untuk Mengelola File di Linux / UNIX

  1. Menyalin file di Linux

  2. Cara Memulihkan File yang Dihapus Di Linux [Panduan Pemula]

  3. Cara Memulihkan File yang Dihapus di Linux