< Hogyanok

Undelete Linuxon

Szerző: Sallai András

Copyright © 2012, Sallai András

Szerkesztve: 2012, 2015, 2018, 2020, 2021, 2025

Licenc: GNU Free Documentation License 1.3

Web: https://szit.hu

Bevezetés

Ha töröltünk egy vagy több állományt véletlenül és szeretnénk visszanyerni, akkor az első feladat az adott partíciót tegyük csak olvashatóvá újracsatolással, de mindenképpen vegyük ki a használatból! A törlés után minél több fájlműveletet végez egy felhasználó vagy az operációs rendszer a merevlemezen, annál kisebb az esély a visszaállításra.

Ha az adattárolóra már nem ír egy program sem, szükségünk lesz egy másik partícióra. Ez lehet azonos adattárolón vagy egy másikon.

Az ext3 fájlrendszeren nagyon nehéz visszaállítani egy törölt állományt mert az állományleíró inode külön helyen van tárolva az adatoktól, amelyekre már nincs mutató és a merevlemezen akárhol lehetnek. Van azért módszer amivel vissza lehet állítani olyan fájlokat amelyeknek van valamilyen közös jellemzőjük. Például az összes perl fájl lehetséges első sora: #!/usr/bin/perl

Az itt következő írások nem adják minden megoldás részletes magyarázatát de megmondják milyen irányba indulhatunk.

Magicrescue

Az első program a magicrescue a Debian rendszereken a csomaglistában megtalálható.

apt-get install magicrescue

A /usr/share/magicrescue/recipes könyvtárban találhatjuk azoknak típusoknak a meghatározását amiket a program visszaállít. Ha újabb típus szeretnénk, nézzük meg egy fájl tartalmát, könnyen megérhetjük a szerkezetét.

Olvassuk el a hozzátartozó kézikönyvet.

Foremost

A foremost szintén megtalálható minden Debian alapú rendszeren.

apt install foremost

Olvassuk el figyelmesen a hozzátartozó kézikönyveket (man)!

Például egy pendrive visszaállításnál először ki kell deríteni, milyen néven érhető el a pendrive a /dev könyvtárban. Használjuk a következő parancsokat a tájékozódásra:

lsblk
lsblk -f
fdisk -l

Nálam ez például sdd1

Ezek után a visszálltáshoz hozzunk létre egy könyvtárat

mkdir ~/recovery

foremost -i /dev/sdd1 -o ~/recovery

Ha gyorsan szeretnénk visszahozni állományokat, akkor megadhatunk fájltípusokat a -t kapcsolóval, vesszővel tagolva többet is. Például az LibreOffice dokumentumok szimpla zipelt fájlok, ezért a következőket írhatom:

foremost -t zip -i /dev/sdd1 -o ~/recovery

Esetleg a legújabb foremost verzió:

lynx http://foremost.sourceforge.net/
cd ujforemostdir
make
make install

Ext3Undel

Az ext3undel program valójában a foremost programot használja. Egy interaktív felületet biztosít számunkra, amely majd megalkotja a foremost teljes parancssorát.

Az Ext3Undel letölthető a Freshmeatról: * http://freshmeat.net/projects/ext3undel

ext3grep

Az ext3grep nem kifejezetten fájlok visszaállítására szolgál, de alkalmas a fájlrendszer elemzésére, ezért más eszközökkel együtt alkalmas fájlok visszaállítására.

apt-get install ext3grep

Az alábbi linken egy ilyen leírást láthatunk:

http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html

Na ez türelem játék. A törölt fájlok visszaállításának talán legnehezebb módja.

extundelete

lynx http://extundelete.sourceforge.net

Ezen rész készítésekor 0.2.0 verzió érhető el.

mkdir /root/src
cd /root/src
wget http://downloads.sf.net/projects/extundelete/files/extundelete/0.2.0/extundelete-0.2.0.tar.bz2
apt-get install bzip2
tar -xjf extundelete-0.2.0.tar.bz2
cd extundelete-0.2.0
apt-get install build-essential e2fslibs-dev
./configure
make
mkdir /root/bin
cp /root/src/extundelete-0.2.0/src/extundelete /root/bin/

extundelete /dev/sda1 --restore-all

Ahol futtattuk a parancsot, abban a könyvtárban létrejön a következő könyvtár:

RECOVERED_FILES

Ebben megtaláljuk az összes visszaállított fájlt.

Megpróbálhatjuk a következő kapcsolókat is:

--restore-file
--restore-files
--restore-directory

Például szeretnénk visszaállítani a egy fájl, akkor használjuk így:

extundelete --restore-file /home/jozsi/toroltfajnev.kit /dev/sda1

ext4magic

Ext3 és ext4 fájlrendszerről képes törölt fájlokat visszaállítani.

apt install ext4magic

Használat:

ext4magic -m /dev/sdc1

debugfs

Indítsuk el a debugfs parancsot, megadva a kívánt fájlrendszert. Az lsdel parancs megadja miilyen inode-ok lettek törölve, szám alapján. Ezeket visszaállíthatjuk:

debugfs /dev/sdb1
debugfs: lsdel
debugfs: undel 3444332

RLinux

Több platformos, grafikus felületű visszaállító.

lynx http://www.r-tt.com/free_linux_recovery

mkdir /root/install
wget http://www.r-tt.com/downloads/rli_en_4_i386.deb
apt-get install xdg-utils
dpkg -i rli_en_4_i386.deb

Egy rendszergazdai terminál indítása után a következő paranccsal indíthatjuk:

rlinux

TestDisk

Több platformos.

Webhely:

http://www.cgsecurity.org

Telepítés

apt install testdisk

Indítás

testdisk

Menüs helyrehozó, visszaállító. Támogatott fájlrendszerek:

DOS/Windows FAT12, FAT16 and FAT32

exFAT

NTFS

ext2, ext3, ext4

btrfs

LVM and LVM2, Linux Logical Volume Manager

XFS, SGI's Journaled File System

Sun ZFS

stb.

Képernyőkép:

TestDisk 6.14, Data Recovery Utility, July 2013
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
TestDisk is free data recovery software designed to help recover lost
partitions and/or make non-booting disks bootable again when these symptoms
are caused by faulty software, certain types of viruses or human error.
It can also be used to repair some filesystem errors.
Information gathered during TestDisk use can be recorded for later
review. If you choose to create the text file, testdisk.log , it
will contain TestDisk options, technical information and various
outputs; including any folder/file names TestDisk was used to find and
list onscreen.
Use arrow keys to select, then press Enter key:
>[ Create ] Create a new log file
[ Append ] Append information to log file
[ No Log ] Don't record anything

Pendrive-on, fájlrendszer FAT32, sikeresen visszaállítottam egy törölt fájt, valahogy így:

testdisk

[No Log]

Itt kiválasztottam a pendrive-ot a le-fel billentyűvel:

Disk /dev/sdd - 257 MB / 246 MiB - LEXAR JUMPDRIVE

Ez után folytathatjuk:

[Proceed]

Ki kell választanunk a partíciós tábla típusát:

[Intel] Intel/PC partition

Ez az a partíciótípus, amelyen 4 elsődleges és kiterjesztett felosztás lehetséges.

Ez után partíciókezelő eszközt választunk:

[ Advanced ] Filesystem Utils

Az eszközök közül válasszuk az Undelet menüpontot:

[Undelete]

A le-fel billentyűvel válasszuk ki a visszaállítandó fájlt.

Ezek után oda kell másolnunk ahova szeretnénk. Ehhez először a „c” billentyűt nyomjuk le:

c

A következő képernyőn választhatunk könyvtárat, ha felajánlott nem jó. Az „Y” billentyűvel nyugtázzuk:

Y

Ezzel készen vagyun, a „q” billentyűvel kiléphetünk:

q

Partíciók visszaállítása testdisk-kel

Tegyük fel, hogy van egy külső merevlemez, amiről minden partíció eltűnt. A lemez nem volt formázva, csak a partíciók törölve lettek.

Volt rajta egy Ext4 és egy NTFS fájlrendszer.

Csatlakoztassuk a meghajtót

Keressük meg: lsblk

sudo testdiks /dev/sdc

Válasszuk ki a lemezt, majd [Proceed]

Válasszuk ki milyen partíciós tábla típus volt rajta:

[Interl]

[EFI GPT]

Analizáljuk a lemezt

[Analyse]

A jobbra balra billentyűvel válasszuk ki a megfelelő partíció állapotot

P=Primary

Alapértelmezetten valószínűleg D=Deleted

Ügyeljünk arra, hogy ne kapjunk Bad structure üzenetet

Ezt követően válasszuk a kiíratást

[Write]

Egyéb megoldások

Vannak grafikus programok is, amelyek alkalmasak visszaállítani a törölt fájlokat. Ilyen a Quick-recovery. Az alábbi helyről érhető el:

http://www.bestshareware.net/download/quick-recovery-for-linux.htm

A leírás szerint kipróbálható de fizetni kell érte. A Linuxos verzióját próbáltam ki. Indítás után nem lehet választani meghajtót. Talán mert nem regisztráltam ez egyelőre nem derült ki. Van Windowsos és Linuxos verziója.

A következő programnak csak Windowsos verziója tölthető le, még nem próbáltam:

http://www.data-recovery-software.net/Linux_Recovery_Download.shtml

http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step

Midnight Commander

Parancsok menüpont → Törölt fájlok visszaállítása A menüpont kiválasztása után kérjünk segítséget az alábbi billentyűvel:

F1

Nyitott fájl törlése után visszaállítás

lsof | grep "/path/to/file"

progname 5559 user 22r REG 8,5 1282410 1294349 /path/to/file

cp /proc/5559/fd/22 /path/to/restored.file

Szövegfájlok visszaállítása

strings /dev/sda4 > /path/to/big_text_file

FAT undelete

Távolítsuk

# apt install testdisk

Legyen a visszaállítandó eszköz /dev/sdb Távolítsuk el az érintett fájlrendszert. Ha ez nem lehetséges, csatoljuk újra csak olvashatóként:

mount -o remount,ro /dev/sdb1

Készítsünk biztonsági másolatot

# dd if=/dev/sdb of=/utvonal/sdb.img

Indítsuk a testdisket:

# testdisk /dev/sdb

A partíció számát nem kell megadni.

Válasszuk a Proceed lehetőséget:

>[Proceed]

Válasszuk az Intel lehetőséget:

>[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
[Humax ] Humax partition table
[Mac ] Apple partition map
[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection

Válasszuk az Advanced lehetőséget:

[ Analyse ] Analyse current partition structure and search for lost partitions
>[ Advanced ] Filesystem Utils
[ Geometry ] Change disk geometry
[ Options ] Modify options
[ MBR Code ] Write TestDisk MBR code to first sector
[ Delete ] Delete all data in the partition table
[ Quit ] Return to disk selection

Válasszuk ki a partíciót ha több is van, majd válasszuk az Undelete lehetőséget:

[ Type ] [ Boot ] >[Undelete] [Image Creation] [ Quit ]

Válasszuk ki azt könyvtárat, ahol a törölt fájl van, majd válasszuk a „c” billentyűt, Felkínálja a másolás helyét. Ha másolás helye megfelelő csak válaszuk a „C” billentyűt. Végül lépjünk ki a „q” billentyűvel.

Megelőzés

Bármely linuxos rendszeren

Szemetest kell beállítani.

Konzolon: linux_konzolon_szemetes

Samba: fájlok_szemetesbe_helyezése_törlés_helyett

ext3

Fájlonként lehetőségünk van beállítani egy fájl védelmét:

chattr -u /utvonal/fajl

Több információért használjuk a következő parancsot:

man chattr

Ellenőrizzük:

lsattr /utvonal/fajl

Ehhez hasonlót láthatunk:

-u---------------e- fajlnev

NTFS

Telepíteni kell a ntfs-3g csomagot.

$ sudo apt install ntfs-3g

Az lsblk paranccsal nézzük meg, melyik partíciót kell leválasztanunk.

lsblk

Válasszuk le a fájlt, például:

umount /dev/sdb2

Az NTFS fájlrendszereken törölt fájlok az ntfsundelete paranccsal állíthatók vissza.

Visszaállítható fájlok keresése:

# ntfsundelete -s /dev/sdb2
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
16 F... 0% 2019-03-27 20:17 0 <none>
17 F... 0% 2019-03-27 20:17 0 <none>
18 F... 0% 2019-03-27 20:17 0 <none>
19 F... 0% 2019-03-27 20:17 0 <none>
20 F... 0% 2019-03-27 20:17 0 <none>
21 F... 0% 2019-03-27 20:17 0 <none>
22 F... 0% 2019-03-27 20:17 0 <none>
23 F... 0% 2019-03-27 20:17 0 <none>
88098 FN.. 100% 2020-09-02 23:18 27598 valtas.ods
88117 FR.. 100% 2020-09-04 18:55 0 eros.xlsx.ntfs-3g-0000000002
88118 FR.. 100% 2020-09-04 18:40 97 egyeb.xlsx#
88119 F..! 0% 1970-01-01 01:00 0 <none>
88124 FR.. 100% 2020-09-04 18:52 97 rend.ods#
88125 FR.. 100% 2020-09-04 18:51 97 takaras.xlsx#
88126 FR.. 100% 2020-09-04 08:20 0 felmeres.ods.ntfs-3g-0000000002
Files with potentially recoverable content: 6

Az táblázat oszlopai sorra:

Inode szám

Jelzők

A fájlból helyreállítható mennyiség

A fájl utolsó módosításának dátuma

A fájl utolsó módosításának ideje

A visszaállítandó fájl mérete bájtokban

A visszaállítandó fájl neve

A kimenet végén megkapjuk, hogy hány fájl állítható vissza. A fájlok sorában láthatjuk, hogy hány bájtos lesz a visszaállított fájl.

Visszaállításnál adjuk meg -i kapcsolóval a inode számot, a visszaállító kapcsolója a -u:

ntfsundelete -u -i 88117 /dev/sdb2

Lehetséges kimenet:

# ntfsundelete -u -i 88117 /dev/sdb2
Inode Flags %age Date Size Filename
---------------------------------------------------------------
88117 FR.. 0% 2020-09-04 18:55 0 eros.xlsx.ntfs-3g-0000000002
Undeleted 'eros.xlsx.ntfs-3g-0000000002' successfully to eros.xlsx.ntfs-3g-0000000002.

Az aktuális könyvtárban létrejön a fájl a megadott néven.

Intervallum megadása

$ sudo ntfsundelete /dev/sdb2 --undelete --inodes 88098-88126

$ sudo ntfsundelete /dev/sdb2 --undelete --inodes 88098-88126,88127

Levágás

Az ntfsundelete 512 bájtos blokkmérettel dolgozik. Amikor visszaállít egy fájlt, az 512 legközelebbi többszörösére kerekíti a fájl méretét.

Ha szeretnénk ezt elkerülni:

$ sudo ntfsundelete /dev/sdb2 --undelete --truncate --inodes 54

Kimeneti fájl neve

$ sudo ntfsundelete /dev/sdb2 --undelete --truncate --inodes 54 --output valami.ods

Kimeneti könyvtár neve

$ sudo ntfsundelete /dev/sdb2 \
--undelete --truncate --match '*.ods' \
--destination recovery/

Mintaillesztés

$ sudo ntfsundelete /dev/sdb2 --undelete --truncate --match '*.ods'

Elmúlt időszak

Megadhatunk mennyi ideje módosított fájlokat szeretnénk:

Lehetséges értékek:

d = days

w = weeks

m = months

y = years

Például az elmúlt 1 hétben változott fájlok:

$ sudo ntfsundelete /dev/sdb2 --time 1w

Szűrés fájlméretre

Használható egységek:

k = kilobyte

M/m = megabyte

g = gigabyte

t = terabyte

$ sudo ntfsundelete /dev/sdb2 --size 500k-80M

Irodalom

http://batleth.sapienti-sat.org/projects/FAQs/ext3-faq.html (2018)

https://help.ubuntu.com/community/DataRecovery (Ajánlott!; 2018)

https://www.cgsecurity.org/wiki/TestDisk_HU (2018)

https://linuxhint.com/recover_files_ntfs_live_ubuntu/ (2020)