[[oktatas:linux:hogyanok|< Hogyanok]]
====== Undelete Linuxon ======
* **Szerző:** Sallai András
* Copyright (c) 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:
* 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.
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
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:
* 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: [[oktatas:linux:hogyanok:linux_konzolon_szemetes]]
* Samba: [[oktatas:linux: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
17 F... 0% 2019-03-27 20:17 0
18 F... 0% 2019-03-27 20:17 0
19 F... 0% 2019-03-27 20:17 0
20 F... 0% 2019-03-27 20:17 0
21 F... 0% 2019-03-27 20:17 0
22 F... 0% 2019-03-27 20:17 0
23 F... 0% 2019-03-27 20:17 0
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
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)