GNU/Linux >> Linux Esercitazione >  >> Linux

Unix/Linux ripristina/ripristina i file eliminati

Il link che qualcuno ha fornito nei commenti è probabilmente la tua migliore possibilità.

Linux esegue il debug di Hack:Undelete Files

Quel resoconto, sebbene sembri un po' intimidatorio, è in realtà abbastanza semplice da seguire. In generale i passaggi sono i seguenti:

  1. Usa debugfs per visualizzare un registro dei filesystem

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

    debugfs: lsdel
    
  3. Esempio di output

    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. Esegui il comando in debugfs

    debugfs: logdump -i <7536655>
    
  5. Determina l'inode dei file

    ...
    ...
    ....
    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. Con le informazioni sull'inode di cui sopra, esegui i seguenti comandi

    # 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
    

I file sono stati recuperati in recovered.file.001 .

Altre opzioni

Se quanto sopra non fa per te, ho usato strumenti come photorec per recuperare i file in passato, ma è adatto solo per i file di immagine. Ho scritto ampiamente di questo metodo sul mio blog in questo articolo intitolato:

Come recuperare file jpeg e mov corrotti dalla scheda SDD di una fotocamera digitale su Fedora/CentOS/RHEL.


Con un po' di possibilità, a volte posso recuperare i file cancellati con questo script o la soluzione successiva nella risposta :

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

C'è un altro trucco utile:se conosci uno schema nei file eliminati, digita alt +sys +resuo per riavviare+rimontare in sola lettura, quindi con un live-cd, usa grep per cercare nel disco rigido :

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

quindi modifica /tmp/recover per mantenere solo quelli che prima erano i tuoi file.

Ehi, se con la filosofia unix tutto è file, è ora di approfittarne, no?


Ciò che ha funzionato per me è stato fornito da arch (si applica solo ai file di testo):

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

dove /dev/sdXN è la partizione contenente il file perso (controlla con mount se non sei sicuro).

Ci vuole un po' di tempo, ma ha funzionato quando ho accidentalmente cancellato del codice sorgente che non avevo ancora commesso!


Linux
  1. Spostare file su Linux senza mv

  2. Come recuperare un file cancellato in Linux

  3. Recuperare un file cancellato??

  4. Su Linux/Unix, .tar.gz rispetto a .zip è importante?

  5. Come posso recuperare/ripristinare i file da una partizione ext4?

Comando AWK in Linux/Unix

comando ls in Linux/UNIX

Come installare TestDisk su Linux e recuperare i file eliminati

Come usare PhotoRec per recuperare file cancellati in Linux/Ubuntu

Come usare Linux per recuperare file cancellati

Come comprimere un file in Linux