Baj esetén: TestDisk && PhotoRec

Címkék

Random böngészés közben hubertf NetBSD-s blogjából kiindulva akadtam két általam még nem ismert, első látásra hasznosnak tűnő programra. Az egyik a TestDisk, a másik pedig a PhotoRec. A TestDisk a honlapja szerint egy adatvisszaállító szoftver, amely az operációs rendszerek széles skáláján (DOS, Windows (NT4, 2000, XP, 2003), Linux, FreeBSD, NetBSD, OpenBSD, SunOS és MacOS) képes működni. Fejlesztésének elsődleges célja az elveszett partíciók visszaállítása és a merevlemezek elveszett boot képességének visszaállítása.

A program képes megtalálni a következőket:

  • BeFS ( BeOS )
  • BSD disklabel ( FreeBSD/OpenBSD/NetBSD )
  • CramFS, Compressed File System
  • DOS/Windows FAT12, FAT16 and FAT32
  • HFS and HFS+, Hierarchical File System
  • JFS, IBM's Journaled File System
  • Linux Ext2 and Ext3
  • Linux Raid
    • RAID 1: mirroring
    • RAID 4: striped array with parity device
    • RAID 5: striped array with distributed parity information
    • RAID 6: striped array with distributed dual redundancy information
  • Linux Swap (versions 1 and 2)
  • LVM and LVM2, Linux Logical Volume Manager
  • Mac partition map
  • Novell Storage Services NSS
  • NTFS ( Windows NT/2K/XP/2003 )
  • ReiserFS 3.5, 3.6 and 4
  • Sun Solaris i386 disklabel
  • Unix File System UFS and UFS2 (Sun/BSD/...)
  • XFS, SGI's Journaled File System

A program GPL licencű, és egyes Linux disztrók (KNOPPIX, rinity Rescue Kit, RIPLinux, Ubuntu, ...) tartalmazzák.

A TestDisk testvérprogramja (olyannyira, hogy Ubuntu alatt egybe vannak csomagolva) a PhotoRec. A program képes kép, archívum és egyéb fileok visszaállítására merevlemezről, CD-ROM-ról, digitális kameráról. A PhotoRec szintén több operációs rendszeren fut (DOS/Win9x, Windows NT 4/2000/XP/2003, Linux, FreeBSD, NetBSD, OpenBSD, Sun Solaris, Mac OS X), licence szintén GPL.

A programok honlapja: TestDisk, PhotoRec

Hozzászólások

A Testdisk az életemet mentette meg szinte többször is az évek folyamnán. Nagyon jó kis app, de nem mindenható.

Üdv
Godot

Ha jól gyanaxom, akkor ennek valami bootolható divájszon kell lennie, mert ha nem bootol a gép vagy sérült rajta pár partició, akkor hiába van fenn a gépen.

Az Ubuntu live-cd-n rajta van vajon?

LVM visszaállítás milyen?
mostanában elég sokszor használok LVM et, tudom raid el kéne de valahol nem számít az adatbiztonság, de azért akkor is kiváncsi vagyok mitörténik ha LVM egyik tagja meghal mi lesz)

(mondjuk ezt kitudom próbálni vmwareben...)

Úgy tűnik, kiváltható ezzel a Norton Ghost. Szeretném ha valaki, aki a TestDisk-et, és a Norton Ghost-ot is használta; valamilyen rövid összevetést beírna.

Valamivel kevered.

"Ghost is a disk cloning program, originally produced by Binary Research, but purchased by Symantec in 1998. The Ghost program launched the market for disk-cloning software."

Ennek semmi koze a testdisk funkciojahoz:

"TestDisk is a powerful free data recovery software! It was primarily designed to help recover lost partitions and/or make non-booting disks bootable again..."

---

A Ghost-ot nem igazan lehet ezzel kivaltani, maximum a partimage lehet jo erre a celra.

A TestDisk kiválóan tette amit kell. Sikeresen és ingyenesen :) visszaállítottam egy Ext2 és egy NTFS partíciót a segítségével.

Köszönet,
RAID tömböt állítottam vissza vele 2 perc alatt.

Hibátlan!

Sziasztok,

Éppen a photorec -kel állítok helyre egy 40GB os laptop merevlemezről képeket.
Írtam egy scriptet ehhez, szeretném megkérdezni, hogy szerintetek jó -e ez így, mármint script-írás technikailag gondolom. Nem rég kezdtem scripteket írni. Arra gondolok, hogy az ilyen típusú szétválogatős feladatokhoz jó -e ez a megközelítés? Érdemes e változókat bevezetni stb. stb. Pl a target directory részeket, vagy Ti regex ekkel oldanátok meg ezt? Biztosan lehetne elegánsabban is megírni egy ilyen szétválogató scriptet, kíváncsi lennék, hogy egy gyakorlott linux guru hogyan írná ezt meg:

#!bin/bash

# törölni a 100kb nál kisebb kép fileokat:

find -name '*.jpg' -size -100k -exec rm -rf {} \;
find -name '*.bmp' -size -100k -exec rm -rf {} \;

# másolás könyvtárakba

mkdir pics docs music

# képek
find -name '*.jpg' -exec cp --target-directory=pics {} \;
find -name '*.bmp' -exec cp --target-directory=pics {} \;
find -name '*.png' -exec cp --target-directory=pics {} \;

# dokumentumok
find -name '*.doc' -exec cp --target-directory=docs {} \;
find -name '*.pdf' -exec cp --target-directory=docs {} \;

# zenék
find -name '*.mp3' -exec cp --target-directory=music {} \;
find -name '*.wav' -exec cp --target-directory=music {} \;
find -name '*.ogg' -exec cp --target-directory=music {} \;

exit 0

Z

Hát megmondom őszintén, hogy a lustaság nagy úr és ha már most helyreállítok fájlokat egy barátomnak, akkor, ha legközelebb is kellene, akkor már nem akarom újra kitalálni, inkább elmenteném a scriptet.

Most átírtam egy kicsit, de még finomítanék rajta a jövőben, szerinted jó így?

http://pastebin.com/ejM6k7sV

Szeretném beleírni, ezt:
echo "hany kb alatti kepeket toroljek? "
read size

find -name '*.jpg' -size -${size}k -exec rm -rf {} \;

stb.

Azt pl hogyan tudnám megoldani bash ben, hogy minden fájl, ami nem pdf nem jpg nem mp3 stb - vagyis a maradék, az menjen az egyéb mappába?

Lehetne úgy is - és biztos ez az egyszerűbb - de ezt nem szeretném, hogy a cp-t kicserélem mv re és akkor rákeresek az összes maradék fájlra és azokat másolnám az egyéb mappába.

Van ilyesminél elegánsabb megoldás?

find . | grep -v 'jpg\|bmp\|pdf'

Arra gondolok, hogy automatikusan ismerje fel, hogy melyek azok a kiterjesztések, amik a scriptben szerepelnek. Vagy még a scipt elején felismerné a kiterjesztéseket és eleve minden kiterjesztésre létrehozna egy olyan nevű könyvtárat

Ilyesmire gondolok:

find . | grep -o '\.[^0-9]\{3\}$' | sort | uniq | awk -F '.' '{print $2}'

Így kijönnek a kiterjesztések, csak ebből, hogyan hozhatok létre ilyen nevű könyvtárakat?

Találtam egy ilyet:

for FILE in *.{xml,mov,mpeg,mpg}
do
# remove the last dot and subsequent chars, then add new ext
DIR="${FILE%.*}.itmsp"
mkdir -p "$DIR"
mv "$FILE" "$DIR"
done

ez nagyon jó lenne, ha nem kellene manuálisan beleírni a kiterjesztéseket, hogyan tudnám feltölteni a {} közötti részt a file kiterjesztésekkel?

-- Zoli