Tartalomjegyzék
Undelete Linuxon
- Szerző: Sallai András
- Copyright © Sallai András, 2012, 2015, 2018, 2020, 2021
- 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:
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.
lynx http://www.cgsecurity.org/wiki/TestDisk
apt-get install testdisk
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
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:
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:
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
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