[[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)