Autor Wątek: [SYSTEMY PLIKÓW] [ROZWIĄZANY] Jak skopiować katalogi z dysku z uszkodzonymi sektorami?  (Przeczytany 6765 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

CameronPoe

  • SUSE Root
  • *****
  • Wiadomości: 1073
Mam dysk 500 GB, na którym znajduje się kilka tysięcy plików o łącznej pojemności około 25 GB. Niestety wiele z tych plików znajduje się w miejscu gdzie są uszkodzone sektory na dysku i zwykłym sposobem nie da się ich skopiować :(

Skorzystałem więc z dd_rescue, ale okazuje się, że nie radzi on sobie ani z katalogami, ani z wyrażeniami regularnymi (*), tylko samymi plikami w pełnych nazwach, których jest aż z 5 tys., więc nie zamierzam siedzieć cały miesiąc na odzyskiwaniu pojedynczo wszystkich plików.

Próbowałem zrobić to jako skopiowanie całości do pliku (obrazu):
dd_rescue -l log -v /dev/sdb1 obraz.img... ale niestety ten sposób trwa kilkadziesiąt godzin, ponieważ zgrywa cały dysk 500 GB, a nie tylko zajęte miejsce przez te 5 tys. plików (25 GB). Mam tylko 60 GB wolnego miejsca, więc ten sposób jest zupełnie bez sensu i nie do przeskoczenia :(

Czy jest jakiś parametr, który powiedziałby dd_rescue, żeby skopiował tylko obszar przez zajmowane obecnie pliki i katalogi lub skopiował rekursywnie katalogi?
Może ma ktoś jakiś skrypt lub jeszcze jakiś inny program?
« Ostatnia zmiana: Luty 20, 2017, 09:35:37 pm wysłana przez Stefan »

Stefan

  • Moderator
  • Maniak SUSE
  • *
  • Wiadomości: 2947
  • Moderator kuwety
Odp: Jak skopiować katalogi z dysku z uszkodzonymi sektorami?
« Odpowiedź #1 dnia: Wrzesień 20, 2016, 08:18:03 pm »
Kwestii czasu nie przeskoczę. :-( Co do obrazu, ja korzystam z dd pajpując go do gzipa czyli coś w stylu:
dd if=source | gzip -c  > /path/target.img.gz
Nie znam dd_rescue, ale pewnie też da się użyć tej strategii. O ile rozumiem projekt dd_rescueto miał sobie poradzić z niedostatkami dd w przypadku uwalonych nośników.

Skompresowany obraz zamountujesz przy pomocy avfsd:
https://blogs.gnome.org/muelli/2012/10/loopback-monting-huge-gzipped-file/
T60: SXGA+ T5600 3GB DDR2 SSD:60GB OS:jessie || Pomiędzy prezentacją siebie, a reklamą istnieje zasadnicza różnica. Konta z linkami są usuwane.

Grzegorz B

  • SUSE Guru Apprentice
  • ***
  • Wiadomości: 259
Odp: Jak skopiować katalogi z dysku z uszkodzonymi sektorami?
« Odpowiedź #2 dnia: Wrzesień 21, 2016, 06:00:29 pm »
Osobiście zawsze używam w tym celu dystrybucji Clonezilla z opcją rescue. Gotowy obraz odtwarzam na nowym dysku z nadzieją że utraciłem tylko mało istotne dane. Tak jak napisał Stefan - z czasem nic nie da się zrobić.

CameronPoe

  • SUSE Root
  • *****
  • Wiadomości: 1073
Odp: Jak skopiować katalogi z dysku z uszkodzonymi sektorami?
« Odpowiedź #3 dnia: Wrzesień 27, 2016, 10:25:51 am »
Udało mi się poprzywracać same pliki korzystając z dd_rescue (z Clonezillą już nie próbowałem) :D
Trochę na około (bo na programowaniu się nie znam), ale przynajmniej szybko i dokładnie.

1. Wszedłem na uszkodzony dysk1 i zapisałem listę wszystkich katalogów oraz podkatalogów do pliku:
find ./ -type d > /home/cameron/lista_katalogów
2. Przy pomocy KWrite zastąpiłem "entery" i dodałem
mkdir przed każdym wierszem.

3. Dodałem na początku
#!/bin/bashi zapisałem to jako skrypt i wrzuciłem na pamięć przenośną "dysk2".
Po uruchomieniu skryptu utworzyły mi się wszystkie katalogi wraz z podkatalogami na dobrym dysku2.

4. Potem zapisałem listę plików:
find ./ -type f > /home/cameron/lista_plikówi znów przy pomocy kopiowania oraz zastępowania w KWrite i LibreOffice Calc stworzyłem nowy skrypt, który wyglądał na takiej zasadzie:
#!/bin/bash

dd_rescue -v /run/media/cameron/dysk1/ścieżka/do/wszystkich.plików /run/media/cameron/dysk2/ścieżka/do/wszystkich.plików
... i zawierał wszystkie pliki, czyli ponad 5 tys. wierszy :D
Oczywiście wszystkie znaki szczególne takie jak "odstęp" ' ( ) & itp. musiałem poprzedzić w skrypcie znakiem \

Jedyny minus tego był tak, że nie pokazywał mi w terminalu całościowo ilości błędów oraz ile czasu zostało w sumie do końca, ale przynajmniej nie mielił mi całego dysku wraz z niewykorzystaną przestrzenią :grin:
« Ostatnia zmiana: Wrzesień 27, 2016, 10:30:01 am wysłana przez CameronPoe »