Re: Blagam POMOCY !!!!!!!

Autor: Tomasz Zielonka (tz174768_at_zodiac.mimuw.edu.pl)
Data: Fri 21 Apr 2000 - 01:21:16 MET DST


> Czesc !!!
>
> Od razu przepraszam za crossposta, prosze o wyrozumialosc, zalezy mi na
> szybkiej odpowiedzi, problem jest naprawde powazny.
> Moj brat przeinstalowywal windowsa i wszystkie "wazne dane przegral na
> partycje linuxowa (ext2) w skutek nie uwagi pozniej skasowal wszystkie
> partycje na dysku :(((, zrobil partycje windowsowa i zainstalowal windowsa.
> Chodzi mi o odzyskanie skopiowanych na ext2 danych. Stworzona partycja
> windowsowa jest mniejsza niz poprzednia wiec nie powinna byla zachaczyc o
> stare linuxowe.
> Czy jest jakas mozliwosc odzyskania tych danych nie placac ciezkich
> tysiecy jakiejs firmie !??!? to naprawde WAZNE !!!
> I napewno mozliwe. Nie byly tam zalozone zadne nowe partycje dane wiec tam
> sa jak tylko fata przekonac ze tam jest partycja, jak znalezc jej pocztek ?
> To napewno nie jest latwe, ale blagam, podajcie jakies wskazowki, jak
> zaczac, moze ktos moze podeslac jakis soft ?
> BLAGAM !!!
>

Ja bym zrobił to tak:

1) Przełożyć ten dysk na slave albo secondary (jeśli to IDE).

2) Na bootujący dysk zainstalować linuksa.

3) Najlepiej mieć jeszcze jeden dysk o pojemności >= od tego WAZNEGO
dysku i na tym dysku zrobic backup.

Np.
cat /dev/hdX > /dev/hdY
    ^^^^^^^^ ^^^^^^^^
     WAŻNY backup

Ale jeśli nie wiesz co robisz, lepiej tego nie rób. To zamazuje informację
na drugim dysku.

Można też do pliku.

4) Znaleźć początek partycji ext2

Można się posłużyć programem file (rozpoznawanie formatów plików po
zawartości).

Przykład:
Mam partycję ext2 rozpoczynającą na 575 cylindrze. Geometria dysku: 255
heads, 63 sectors, 1046 cylinders.

Obliczam numer pierwszego sektora 575 cylindra.

(575 - 1) * 255 * 63 = 9221310

Przepisuję kilka pierwszych sektorów cylindra do pliku:

# dd if=/dev/hdb of=plik bs=512 count=5 skip=9221310

Co pokazuje file?:

# file plik
plik: Linux/i386 ext2 filesystem

Można to zautomatyzować. Ten skrypt sprawdza kolejne cylindry na obecność
sygnatury ext2:

#!/bin/bash
dysk=/dev/hdb
sects=63
heads=255
cyls=1046
start=0 # ustawić na ostatni cylinder partycji fat
hs=$(($heads * $cyls))

c=$start # uwaga: tutaj numeracja cylindrów od zera
while [ $c -lt $cyls ]; do
    s=$(($c * $hs))
    dd if=$dysk of=dd.out bs=512 count=5 skip=$s 2> /dev/null
    if file dd.out | grep -q 'ext2'; then
        echo "Partycja ext2 od cylindra " $(($c+1))
    fi
    c=$(($c+1))
done

Zmienne na początku trzeba ustawić tak, żeby odpowiadały Twojej
konfiguracji. Geometria dysku powinna odpowiadać temu, co masz w BIOS'ie.
Mam nadzieję, że cały czas używasz tej samej, bo inaczej kiepsko.

Skrypt nie wykryje ext2 na pierwszej partycji logicznej partycji
rozszerzonej (chyba), bo tam będzie małe przesunięcie. To też da się
zrobić... miałeś partycje rozszerzone?

file może się pomylić i wykryć więcej takich `partycji', choć to raczej
mało prawdopodobne.

5) Utworzyć partycję rozpoczynającą się w tym cylindrze, a kończącą się na
końcu dysku. Jeśli będzie za duża (np. zahaczy o swap), nie szkodzi,
linuks sobie poradzi.

Tu może przydać się reboot, jeśli kernelowi nie uda się uaktualnić
informacji o partycjach.

6) Zamontować partycję, najlepiej read-only

Pozdrawiam,
Tomek



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 20:02:22 MET DST