File: Ext2fs-Undeletion.pl.txt

package info (click to toggle)
doc-linux-pl 2002.06.14-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, jessie, jessie-kfreebsd, lenny, squeeze, wheezy
  • size: 6,900 kB
  • ctags: 968
  • sloc: makefile: 66
file content (1320 lines) | stat: -rw-r--r-- 47,724 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
  Linux Ext2fs Undeletion mini-HOWTO
  Autor: Aaron Crane aaronc@poboc.com
  v1.3, 2 lutego 1999
  ssaawwiicckkiibb@@eeee..ppww..eedduu..ppll
  v1.0, 15 kwietnia 1999


  Wyobra sobie. Trzy ostatnie trzy dni spdzie bez snu, jedzenia, a
  nawet bez prysznica. Wanie ukoczye program, ktry przyniesie Ci
  wiatow saw i uznanie. Musisz go jeszcze tylko starowa i umieci
  na Metalab-ie. No, i skasowa wszystkie kopie zapasowe tworzone przez
  Emacs-a.  Piszesz wic rm * ~. Ju za pno, zauwaye dodatkow
  spacj w poleceniu. Wanie skasowae cae swoje dzieo !  Nadchodzi
  pomoc.  Dokument ten wyjania jak odzyskiwa skasowane pliki w sys
  temie plikw Second Extended File System. Moe uda Ci si jednak opub
  likowa Twj genialny program.  Dokument ten zosta napisany w stan
  dardzie ISO-8859-2.  Orygina tego dokumentu znajduje si pod adresem
  http://pobox.com/~aaronc/ <http://pobox.com/~aaronc/>.
  ______________________________________________________________________

  Spis treci













































  1. Wstp

     1.1 Historia publikacji
        1.1.1 Zmiany w wersji 1.1
        1.1.2 Zmiany w wersji 1.2
        1.1.3 Zmiany w wersji 1.3
     1.2 Inne lokalizacje tego dokumentu

  2. Jak nie skasowa plikw

  3. Jakiego wspczynnika odzyskania skasowanych plikw mog si spodziewa ?

  4. Jak odzyska skasowane pliki ?

  5. Odmontowanie systemu plikw

  6. Przygotowanie do bezporednich zmian iwzw

  7. Przygotowanie do zapisu danych w innym miejscu

  8. Szukanie skasowanych iwzw

  9. Uzyskiwanie szczegowych informacji o iwzach

  10. Odzyskiwanie blokw danych

     10.1 Mae pliki
     10.2 Wiksze pliki

  11. Bezporednie modyfikacje iwzw

  12. Czy bdzie to kiedy atwiejsze?

  13. Czy s jakie programy automatyzujce ten proces?

  14. Kolofon

  15. Wyrazy uznania i bibliografia

  16. Formalnoci

  17. Od tumacza



  ______________________________________________________________________

  11..  WWssttpp

  To mini-Howto stara si dostarczy porad jak odzyskiwa skasowane
  pliki w systemie plikw ext2. Zawiera ono rwnie dyskusj, jak przede
  wszystkim, nie dopuci do skasowania wanych plikw.

  Chciabym, aby byo ono przydatne dla ludzi, ktrym zdarzy si may
  wypadek z rm; jakkolwiek mam rwnie nadziej, e przeczytaj je take
  inni.  Nigdy nie wiadomo, pewnego dnia, ktra z zamieszczonych tu
  informacji z moe uratowa Ci tyek.

  Tekst ten zakada ogln podstawow wiedz o systemie plikw UNIX-a.
  Mam jednak nadziej, e bdzie dostpny dla wikszoci uytkownikw
  Linux-a.  Jeli jeste cakowicie pocztkujcy, obawiam si, e
  odzyskiwanie plikw _w_y_m_a_g_a iloci wiedzy technicznej, ktrej nie
  posiadasz.

  Nie bdziesz mg odtwarza skasowanych plikw z systemu plikw ext2
  bez praw odczytu do urzdzenia, na ktrym byy one przechowywane.
  Oglnie oznacza to, e musisz by administatorem (root). Niektre
  dystrybucje (takie jak Debian GNU/Linux) tworz grup disk, ktrej
  czonkowie maj dostp do takich urzdze.  Bdziesz potrzebowa take
  debugfs z pakietu e2fsprogs.  Prawdopodobnie jest on ju zainstalowany
  przez Twoj dystrybucj.

  Dlaczego to napisaem? Wyniko to gwnie z moich wasnych dowiadcze
  ze zwyk gupot i katastrof spowodowan przez komend rm -r
  wykonywan z prawami administratora. Skasowaem 97 plikw typu JPEG,
  ktrych potrzebowaem i ktrych prawie na pewno nie mona byo
  odzyska z innych rode. Z pomoc uytecznych wskazwek (patrz
  rozdzia ``Wyrazy uznania i Bibliografia'') i duej wytrwaoci,
  odzyskaem 91 nieuszkodzonych plikw. Udao mi si odtworzy czciowo
  nastpne pi (wystarczajco, aby zobaczy co byo na tych obrazkach).
  Tylko jednego nie byem w stanie obejrze, ale nawet w tym przypadku,
  jestem prawie pewien, ze stracone zostay nie wiecej ni 1024 bajty
  (niefortunnie z samego poczatku pliku; uwzgldniajc to, e nic nie
  wiem o formacie JPG, zrobiem wszystko co mogem).

  W dalszych rozwaaniach bd chcia przedstawi jakiej wielkoci
  wspczynnika odtworzenia skasowanych plikw moesz si spodziewa.


  11..11..  HHiissttoorriiaa ppuubblliikkaaccjjii

  Istniej nastpujce upublicznione wersje tego dokumentu (i daty ich
  publikacji):


    v1.0, 18 stycznia 1997

    v1.1, 23 lipca 1997 (patrz rozdzia ``Zmiany w wersji 1.1'')

    v1.2, 4 sierpnia 1997 (patrz rozdzia ``Zmiany w wersji 1.2'')

    v1.3, 2 lutego 1999 (patrz rozdzia ``Zmiany w wersji 1.3'')


  11..11..11..  ZZmmiiaannyy ww wweerrssjjii 11..11

  Jakie zmiany zostay zrobione w tej wersji? Przede wszystkim, zosta
  poprawiony bd w przykadowym odzyskiwaniu pliku. Dzikuj wszystkim,
  ktrzy napisali, eby wskaza mi ten bd. Mam nadziej, e nauczyem
  si by bardziej uwanym przy interakcyjnej pracy z programem.

  Po drugie, rozwaania o systemie plikw w UNIX-ie zostay przerobione
  tak, aby uczyni je bardziej zrozumiaymi. Od pocztku nie byem z
  tego zadowolony i dostaem komentarze, e nie byo to napisane zbyt
  jasno.

  Po trzecie, uuencode'owany gzip-owany tar-owany pakiet fsgrab ze
  rodka pliku zosta usunity. Teraz program dostpny jest na mojej
  stronie domowej <http://pobox.com/~aaronc/tech/fsgrab-1.2.tar.gz> i na
  Metalab-ie <http://metalab.unc.edu/pub/Linux/utils/file/> (i kopiach,
  w Polsce - Sunsite
  <http://sunsite.icm.edu.pl/pub/Linux/sunsite/utils/file/> ).

  Po czwarte, dokument ten zosta przetumaczony na jzyk skadu SGML
  uywany w Linux Documention Project. Ten jzyk moe by atwo
  konwertowany do innych jzykw skadu (np. HTML-a i LaTeX-a) w celu
  dogodnego sposobu wywietlania i drukowania. Jedn z korzyci z tego
  jest to, e adny wygld wersji papierowej jest atwiejszy do
  osigniecia. Inn jest to, e dokument zawiera wewntrzne i zewntrzne
  odnoniki, gdy ogldany jest przez WWW.


  11..11..22..  TToo wwyyddaanniiee zzaawwiieerraa wwyycczznniiee ppoopprraawwkkii.. GGwwnniiee uuwwzzggllddnniieemm
  zzmmiiaannyy ssuuggeerroowwaannee pprrzzeezz cczzyytteellnniikkww,, ttoo oonnee ss wwaanniiee nnaajjwwaanniieejjsszzee..
  PPiieerrwwsszzaa zzmmiiaannaa zzoossttaaaa zzaassuuggeerroowwaannaa pprrzzeezz EEggiillaa KKvvaalleebbeerrggaaeeggiill@@kkvvaallee
  bbeerrgg..nnoo,, kkttrryy wwsskkaazzaa nnaa ppoolleecceenniiee dduummpp  ww ddeebbuuggffss .. JJeesszzcczzee rraazz,,
  ddzziikkii EEggiill..  DDrruuggaa zzmmiiaannaa ppoolleeggaaaa nnaa zzaazznnaacczzeenniiuu,, ee uuyycciiee cchhaattttrr
  ppoommaaggaa uunniikknn sskkaassoowwaanniiaa wwaannyycchh pplliikkww.. DDzziieekkuujj HHeerrmmaannoowwii SSuuiijjss
  HH..PP..MM..SSuuiijjss@@kkuubb..nnll zzaa zzaauuwwaaeenniiee tteeggoo..  SSttrreesszzcczzeenniiee zzoossttaaoo uuaakkttuuaall
  nniioonnee.. ZZoossttaayy ddooddaannee UURRLL--ee ddoo oorrggaanniizzaaccjjii ii oopprrooggrraammoowwaanniiaa.. WWpprroowwaadd
  zzoonnoo wwiieellee iinnnnyycchh mmnniieejjsszzyycchh zzmmiiaann ((lliitteerrwwkkii ii ttyymm ppooddoobbnnee))..  ZZmmiiaannyy
  ww wweerrssjjii 11..22

  11..11..33..  ZZmmiiaannyy ww wweerrssjjii 11..33

  Pomimo, e jest to pierwsza wersja od 17 miesicy, jest tutaj mao
  nowego. W wersji tej poprawione s drobniejsze bdy (literwki, puste
  URL-e, tego typu rzeczy -- szczeglnie nie zwizane z Open Group),
  uaktualniono kilka czci tekstu, ktre ulegy przeterminowaniu,
  takich jak partie dotyczce wersji jdra i lde. No i zmieniem
  `Sunsite' na `Metalab'.

  To wydanie jest przewidywane jako ostatnie przed wersj 2.0, ktra,
  mam nadziej, bdzie penym Howto. Pracuj nad istotnymi zmianami,
  ktre spowoduj zwikszenie gwnego numeru wersji.


  11..22..  IInnnnee llookkaalliizzaaccjjee tteeggoo ddookkuummeennttuu

  Najnowsza publiczna wersja tego dokumentu powinna by zawsze dostpna
  na Linux Documentation Project site <http://metalab.unc.edu/LDP/> (i
  kopiach, w Polsce - Sunsite
  <http://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/LDP/> ).

  Najbardziej aktualna wersja jest rwnie przechowywana na mojej
  stronie domowej <http://pobox.com/~aaronc/> w kilku formatach:


    rdo SGML <http://pobox.com/~aaronc/tech/e2-undel/howto.sgml>.
     To jest format rdowy, tak jak to napisaem uywajc pakietu SGML
     Tools.

    HTML <http://pobox.com/~aaronc/tech/e2-undel/html/>.  To jest HTML,
     automatycznie wygenerowany ze rda SGML.

    czysty tekst <http://pobox.com/~aaronc/tech/e2-undel/howto.txt>.
     To jest czysty tekst, ktry rwnie zosta automatycznie
     wygenerowany ze rda SGML.



  22..  JJaakk nniiee sskkaassoowwaa pplliikkww

  Trzeba pamita, e Linux rni si od MS-DOS jeli chodzi o kasowanie
  plikw. W MS-DOS (jak i w Windows 95), dosy atwo jest odzyska
  skasowane pliki - `system operacyjny' (uywam tego terminu dosy
  swobodnie) dostarcza nawet narzdzi, ktre automatyzuj ten proces.  W
  Linux-ie jest inaczej.

  Regua numer jeden (podstawowa wskazwka) brzmi:


       RRBB KKOOPPIIEE ZZAAPPAASSOOWWEE


  bez wzgldu na wszystko. Pomyl o wszystkich swoich danych. By moe,
  jak ja, trzymasz kilkuletni zbir listw, kontaktw, programw,
  dokumentw na swoim komputerze. Pomyl co by si stao z Twoim yciem,
  gdyby Twj dysk uleg katastrofalnemu uszkodzeniu, lub gdyby -- o
  wielkie nieba ! -- zoliwy craker wyczyci Twj dysk. To nie jest
  niemoliwe; korespondowaem z wieloma ludmi w takiej sytuacji. Myl,
  e teraz wszyscy rozsdnie mylcy uytkownicy Linux-a wyjd, kupi
  urzdzenie do robienia kopii zapasowych, opracuj kalendarz
  archiwizacji i _b__d_ _s_i_ _j_e_g_o _t_r_z_y_m_a_. Ja uywam wolnego dysku twardego
  w innym komputerze i okresowo kopiuj tam przez sie ethernet mj
  katalog domowy. Wicej informacji o planowaniu kalendarza archiwizacji
  znajdziesz u Frischa (1995) (patrz rozdzia ``Bibliografia i Wyrazy
  Uznania'').

  Co wtedy, gdy nie ma kopii zapasowej? (lub nawet przy istnieniu kopii
  zapasowej: adne rodki bezpieczestwa nie s zym rozwizaniem w
  miejscu gdzie przechowywane s wane dane).

  Sprbuj ustawi prawa dostpu do wanych plikw na 440 (lub mniej):
  odebranie sobie samemu praw zapisu oznacza, e rm bdzie wymaga
  potwierdzenia przed skasowaniem. (Zauwayem, e jeli rekursywnie
  kasuj katalog rm -r, proba potwierdzenia pojawi si przy pierwszym i
  drugim pliku, potem program zachowuje si jak rm -rf).

  Niez sztuczk dla wybranych plikw jest utworzenie w ukrytym
  katalogu twardych dowiza do nich. Kiedy usyszaem histori o
  administatorze, ktry przez pomyk skasowa /etc/passwd (nieomal w
  ten sposb niszczc system).  Jednym z rozwiza takiego kopotu jest
  zrobienie czego nastpujcego (jako root):



       # mkdir /.backup
       # ln /etc/passwd /.backup




  Teraz skasowanie pliku wymaga wikszego wysiku: gdy napiszesz tylko



       # rm /etc/passwd




  wtedy



       # ln /.backup/passwd /etc




  odtworzy Twj plik. Oczywicie, to rozwizanie nie pomoe jeli
  nadpiszesz plik, wic nie zapomninaj o kopii zapasowej.

  W systemie plikw ext2 jest moliwe uycie atrybutw ext2, aby
  ochrania pliki. Atrybuty te mog by zmieniane za pomoc komendy
  chattr.  Istnieje atrybut `append-only`: plik z tym atrybutem moe by
  tylko powikszany, nie moe by skasowany i istniejca zawarto nie
  moe by nadpisana. Jeli atrybut ten ma katalog, kady plik czy
  katalog w nim lecy moe by normalnie modyfikowany, ale aden z
  plikw nie moe zosta skasowany.  Atrybut `append-only' ustawia si
  poleceniem


       $ chattr +a FILE...




  Istnieje rwnie atrybut `immutable', ktry moe by zapalany lub
  gaszony tylko przez administratora. Pliku lub katalogu z tym atrybutem
  nie mona zmienieni, skasowa, zmieni jego nazwy, czy utworzy do
  niego twardego dowizania. Mona go ustawi w nastpujcy sposb:



       # chattr +i FILE...




  Ext2fs dostarcza rwnie atrybutu `undeletable' (+u in chattr).
  Zaoenie byo takie, e plik z tym atrybutem po skasowaniu zostaje
  przeniesiony w bezpieczne miejsce `safe location', aby rzeczywiste
  skasowanie przesun w czasie. Niestety funkcja ta nie jest jeszcze
  zaimplementowana w jdrze. Mylaem, e bdzie wiksze zainteresowanie
  ni i stanie si to szybko, ale nie jest ona dostpna (wedug mojej
  wiedzy) w adnej aktualnej wersji jdra.

  Niektrzy radz, aby zrobi alias lub funkcj w powoce rm, ktra
  wykonywaaby rm -i (bdziesz musia potwierdzi skasowanie _k_a__d_e_g_o
  pliku). Dystrubucja  Red Hat <http://www.redhat.com/> robi to
  domylnie dla wszystkich uytkownikw, w tym i dla root-a.  Ja
  osobicie nie lubi oprogramowania, ktre nie moe dziaa bez mojej
  pomocy, dlatego nie uywam tego sposobu. Wczeniej, czy pniej moe
  pojawi si kolejny problem: kiedy bdziesz pracowa w trybie singe-
  user, lub bdziesz uywa innej powoki lub nawet innej maszyny, gdzie
  Twoja funkcja rm nie istnieje. Jeli bdziesz spodziewa si, e kade
  skasowanie wymaga potwierdzenia, dosy atwo jest nie przewidzie
  tego, e kazae skasowa zbyt wiele plikw. Rwnie skrypty i
  programy, ktre podmieniaj rm mog by bardzo niebezpieczne.

  Troch lepszym rozwizaniem jest uycie pakietu, ktry umoliwia
  `odtwarzalne' kasowanie poprzez specjaln komend zastpujca rm.
  Szczegy znajdziesz u Peeka (1993) (patrz rozdzia ``Bibliografia i
  Wyrazy Uznania''). Jednak w ten sposb przyzwyczajamy uytkownika do
  pewniej nonszalancji przy kasowaniu plikw. Nie jest to najlepsze,
  bowiem system typu Unix wymaga jednak uwanego dziaania.



  33..  JJaakkiieeggoo wwssppcczzyynnnniikkaa ooddzzyysskkaanniiaa sskkaassoowwaannyycchh pplliikkww mmoogg ssii
  ssppooddzziieewwaa ??

  To zaley. Problem wynika z tego, e w systemie operacyjnym wysokiej
  jakoci, wielozadaniowym, wielouytkownikowym, takim jak Linux, nie
  moesz przewidzie kiedy kto zechce zapisa co na dysk. Po chwili, w
  ktrej kazae systemowi skasowa jaki plik, bloki przez niego zajte
  mog zosta uyte, gdy system bdzie chcia zapisa co nowego. (Jest
  to jeden przykad oglnej zasady systemw typu Unix: jdro i zwizane
  z nim programy zakadaj, e uytkownicy nie s idiotami). Oglnie
  rzecz biorc, im bardziej obciona jest Twoja maszyna, tym mniej
  prawdopodobne jest odzyskanie plikw.

  Znaczenie moe mie rwnie fragmentacja dysku. Jeli partycja, na
  ktrej by skasowany plik jest bardzo pofragmentowana, masz mae
  szanse na odczytanie caej jego treci.

  Jeli Twj komputer, tak jak mj, realnie jest maszyn
  jednouytkownikow i nie robie niczego co intensywnie korzystao z
  dysku w tragicznej chwili skasowania pliku, moesz si spodziewa
  wspczynnika odzysku zblionego do tego wymienionego niej. Ja
  odzyskaem prawie 94% plikw (byy to pliki binarne) w stanie
  nieuszkodzonym. Jeeli otrzymasz 80% lub wicej, myl, e bdziesz z
  siebie zadowolony.



  44..  JJaakk ooddzzyysskkaa sskkaassoowwaannee pplliikkii ??

  Operacja ta polega gwnie na znalezieniu danych na urzdzeniu
  partycji i uczynieniu ich ponownie widocznymi dla systemu
  operacyjnego. S dwa sposoby, eby to zrobi: pierwszy polega na
  takiej zmianie systemu plikw, eby usun znacznik `deleted' ze
  skasowanych iwzw z nadziej, e pliki nagle pojawi si na swoim
  miejscu. Inn metod, bezpieczniejsz, ale wolniejsz jest znalezienie
  pooenia interesujcych danych na partycji i zapisaniu ich jako nowy
  plik w innym systemie plikw.

  Przed odtwarzeniem danych musisz zrobi kilka rzeczy; patrz rozdziay
  ``Odmontowanie systemu plikw'', ``Przygotowanie do bezporednich
  zmian w iwzach'' i ``Przygotowanie do zapisania danych w innym
  miejscu''.  Informacj jak odzyskiwa pliki znajdziesz w rozdziaach
  ``Szukanie skasowanych iwzw'', ``Uzyskiwanie szczegowych
  informacji o iwzach'', ``Odzyskiwanie blokw danych'' i
  ``Bezporednie modyfikacje iwzw''.



  55..  OOddmmoonnttoowwaanniiee ssyysstteemmuu pplliikkww

  Niezalenie od metody jak wybrae, pierwszym krokiem jest
  odmontowanie systemu plikw zawierajcego skasowane pliki.
  Zdecydowanie nie polecam adnych dziaa na zamontowanym systemie
  plikw. Krok ten powinien by wykonany najszybciej jak to bdzie
  moliwe od momentu, gdy zauwaye, e pomykowo skasowae pliki. Im
  szybciej odmontujesz system plikw, tym wiksza bdzie szansa, e
  Twoje dane nie zostan nadpisane (zamazane).

  Najprostsz metod, aby to zrobi jest: zakadajc, e skasowane pliki
  byy systemie plikw /usr,



       # umount /usr




  Jeli chcesz moesz rwnie utrzyma widoczno katalogu /usr.
  Zamontuj go w trybie tylko-do-odczytu:



       # mount -o ro,remount /usr




  W przypadku, gdy skasowane pliki byy na gwnej partycji musisz doda
  opcj -n, aby zabroni programowi mount na prby zapisu do /etc/mtab:



       # mount -n -o ro,remount /

  Poza tym wszystkim, moliwe jest rwnie, e jaki inny proces uywa
  interesujcego nas systemu plikw (spowoduje to bd typu `Resource
  busy' przy prbie odmontowania). fuser jest programem, ktry wyle
  sygna do kadego procesu uywajcego wskazanego pliku lub punktu
  montowania. Sprbuj tego dla partycji /usr:



       # fuser -v -m /usr




  W ten sposb uzyskasz list przeszkadzajcych Ci procesw. Zakadajc,
  e aden z nich nie jest niezbdny, moesz napisa



       # fuser -k -v -m /usr




  aby wysa sygna SIGKILL do kadego z nich ( gwarantuje to ich
  zabicie), albo



       # fuser -k -TERM -v -m /usr




  aby przekaza kademu sygna SIGTERM (spowoduje to normalne
  zakoczenie pracy procesw).



  66..  PPrrzzyyggoottoowwaanniiee ddoo bbeezzppoorreeddnniicchh zzmmiiaann iiwwzzww

  Moja rada?  Nie uywaj tej metody.  Nie uwaam, eby dobrym pomysem
  bya zabawa na niskim poziomie w systemie plikw.  Metoda ta stwarza
  rwnie problemy jeli chcesz odtworzy pliki wiksze ni 12 blokw.
  W celu odzyskania duych plikw, tak czy owak, bdziesz musia uy
  innej metody.  (Chocia patrz rozdzia ``Czy bdzie to kiedy
  atwiejsze?'' w celu dodatkowych informacji.)

  Jeeli jednak chcesz koniecznie uy tego sposobu, lepiej skopiuj
  bezporednio obraz partycji na inn partycj, a pniej zamontuj j
  uywajc ptli zwrotnej (loopback):



       # cp /dev/hda5 /root/working
       # mount -t ext2 -o loop /root/working /mnt




  (Niektre wersje mount nie potrafi tego zrobi. Jeli Twj mount nie
  dziaa poprawnie, zalecam uycie najnowszej wersji, conajmniej 2.7.
  Duo starsze wersje maj problemy z utrzymaniem bezpieczestwa
  danych.)

  Uywajc ptli zwrotnej, nawet jeli cakowicie zniszczysz system
  plikw, moesz ponownie skopiowa partycj i zacz prby od nowa.
  77..  PPrrzzyyggoottoowwaanniiee ddoo zzaappiissuu ddaannyycchh ww iinnnnyymm mmiieejjssccuu

  Jeeli wybierzesz t drog dziaania, musisz znale partycj
  ratunkow -- miejsce, gdzie zapiszesz nowe kopie odzyskanych plikw.
  Na cae szczcie, twj system zawiera kilka partycji: prawdopodobnie
  partycj gwn, /usr i /home. Wybierz jedn z nich i utwrz na niej
  nowy katalog.

  Jeli masz tylko partycj gwn i wszystko przechowujesz na niej,
  rozwizanie troszk si skomplikuje.  Moe masz partycje MS-DOS lub
  Windows, ktrej bedziesz mg uy ?  Albo masz sterownik do ramdisk-u
  w swoim jdrze, albo w module ?  W celu uycia ramdisk-u (zakadajc,
  e jdro jest nowsze od 1.3.48), napisz:



       # dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
       # mke2fs -v -m 0 /dev/ram0 2048
       # mount -t ext2 /dev/ram0 /mnt




  W ten sposb stworzye 2MB wolumen ramdisk-u i zamontowae do w
  /mnt.

  Krtkie ostrzeenie: jeeli uywasz kerneld (lub zastpujcego go kmod
  w jdrach 2.2.x i pnych 2.1.x) w celu automatycznego adowania i
  odadowywania moduw, nie odmontowuj ramdisk-u dopki nie skopiujesz
  wszystkich plikw na bardziej trway nonik.  W chwili, gdy go
  odmontujesz, kerneld zakada, e moe odadowa modu (zwykle jednak
  czeka pewien okres). Gdy to ju si stanie, pami zostanie uyta
  przez inne czci jdra i stracisz wszystkie godziny spdzone na
  odzyskiwaniu danych.

  Jeeli masz napd Zip, Jaz, LS-120 lub co podobnego, moe on spenia
  z powodzeniem rol partycji ratunkowej. W pozostaych przypadkach,
  uyj po prostu napdu stacji dyskietek.

  Bdziesz jeszcze potrzebowa programu, ktry potrafi czyta dane ze
  rodka partycji. Waciwie moe to zrobi dd, ale aby przeczyta dane
  lece od 600 MB do 800 MB, dd musi przeczyta i zignorowa pierwsze
  600 MB.  Zajmuje to dosy duo czasu, nawet na szybkich dyskach. Moim
  sposobem na obejcie tego problemu byo napisanie programu, ktry
  przeskakuje w rodek partycji. Nazywa si on fsgrab; pakiet ze rdem
  moesz znale na mojej stronie domowej
  <http://pobox.com/~aaronc/tech/fsgrab-1.2.tar.gz> lub na Metalab-ie
  <http://metalab.unc.edu/pub/Linux/utils/file/> (i kopiach, w Polsce -
  Sunsite <http://sunsite.icm.edu.pl/pub/Linux/sunsite/utils/file/> ).
  Jeli bdziesz chcia stosowa t metod, w dalszej czci tego mini-
  JTZ zakadam, e masz fsgrab.

  Nie potrzebujesz fsgrab-a, jeeli aden z plikw, ktre starasz si
  odzyska, nie zajmuje wicej ni 12 blokw (przewanie blok ma rozmiar
  jednego kilobajta).

  Jeeli musisz uy fsgrab-a, ale nie chce Ci si go ciga i
  kompilowa, jest te prosta droga na przetumaczenie polecenia dla
  fsgrab na polecenie dla dd. Majc


       fsgrab -c _c_o_u_n_t -s _s_k_i_p _d_e_v_i_c_e


  moesz uy komendy dd (przewanie jest to duo wolniejsze)

       dd bs=1k if=_d_e_v_i_c_e count=_c_o_u_n_t skip=_s_k_i_p


  Musz Ci ostrzec, e chocia dla mnie fsgrab dziaa doskonale, nie
  mog bra odpowiedzialnoci za jego funkcjonowanie. Pisaem go dosy
  szybko i niestarannie, po prostu, aby dziaa poprawnie. Wicej
  szczegw o gwarancji znajdziesz w rozdziale `No Warranty' w pliku
  COPYING doaczonym do pakietu (the GNU General Public Licence).



  88..  SSzzuukkaanniiee sskkaassoowwaannyycchh iiwwzzww

  Nastpnym krokiem jest odnalezienie w systemie plikw tych iwzw,
  ktre zostay ostanio uwolnione.  Do tego zadania uyjemy programu
  debugfs.  Uruchom debugfs z nazw urzdzenia, na ktrym przechowywany
  jest system plikw:



       # debugfs /dev/hda5




  Jeeli chcesz bezporednio wprowadza zmiany do iwzw, dodaj opcj
  -w, aby umoliwi zapisywanie do systemu plikw:



       # debugfs -w /dev/hda5




  lsdel jest poleceniem debugfs, ktre wyszukuje skasowane iwzy. Po
  zachcie programu, napisz wic:



       debugfs:  lsdel




  Po chwili wiergotania dysku, duga lista zostanie przekierowana do
  Twojego ulubionego amacza na strony (ang. pager) (warto zmiennej
  $PAGER).  Powinienne zachowa gdzie kopi tej listy.  Jeeli uywasz
  less, moesz po prostu napisa -o i nazw pliku wyjciowego. W innym
  razie, bdziesz  musia przesa wyniki do pliku w inny sposb.
  Sprbuj czego takiego:



       debugfs:  quit
       # echo lsdel | debugfs /dev/hda5 > lsdel.out




  Teraz, tylko na podstawie czasu skasowania, rozmiaru, praw wasnoci i
  waciciela musisz okreli, ktre iwzy naleay do skasowanych
  plikw.  Bdzie to prawdopodobnie proste zadanie jeli wypadek
  przydarzy si 5 minut temu, jeli nie, przeszukaj list bardzo
  uwanie.

  Polecam wydrukowanie sobie listy iwzw, ktre chcesz odzyska.
  Uatwi Ci to dalsz prac.



  99..  UUzzyysskkiiwwaanniiee sszzcczzeeggoowwyycchh iinnffoorrmmaaccjjii oo iiwwzzaacchh

  debugfs dysponuje poleceniem stat, ktre wywietla szczegowe
  informacje o iwle. Wykonaj t komend dla wszystkich iwzw, ktre
  chcesz odzyska. Na przykad, jeeli interesuje Ci iwze o numerze
  148003, napisz tak:



       debugfs:  stat <148003>
       Inode: 148003   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
       User:   503   Group:   100   Size: 6065
       File ACL: 0    Directory ACL: 0
       Links: 0   Blockcount: 12
       Fragment:  Address: 0    Number: 0    Size: 0
       ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
       atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
       mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
       dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
       BLOCKS:
       594810 594811 594814 594815 594816 594817
       TOTAL: 6




  Gdy chcesz odzyska wiele plikw, dobrze bdzie jak zautomatyzujesz
  ten proces. Przy zaoeniu, e Twoja lsdel lista interesujcych
  iwzw znajduje si w pliku lsdel.out, napisz co takiego:



       # cut -c1-6 lsdel.out | grep "[0-9]" | tr -d " " > inodes




  Nowy plik inodes zawiera tylko numery iwzwm, ktre chcesz odzyska,
  po jednym w jednej linii. Zapisalimy to, bowiem pniej bardzo nam
  si przyda. Potem piszesz po prostu:



       # sed 's/^.*$/stat <\0>/' inodes | debugfs /dev/hda5 > stats




  i plik stats zawiera wyniki wszystkich polece stat.



  1100..  OOddzzyysskkiiwwaanniiee bbllookkww ddaannyycchh

  Ta cz jest albo bardzo atwa, albo trudna, w zalenoci od tego,
  czy plik ktry chcesz odzyska zajmowa wicej ni 12 blokw.





  1100..11..  MMaaee pplliikkii

  Jeeli plik ma mniej ni 12 blokw, numery wszystkich blokw, ktre on
  zajmuje zapisane s w jednym iwle. Moesz odczyta je po wykonaniu
  polecenie stat dla tego iwza. Ponadto, w debugfs jest polecenie,
  ktre automatycznie odzyskuje taki plik. Wemy ten sam przykad co
  poprzednio:



       debugfs:  stat <148003>
       Inode: 148003   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
       User:   503   Group:   100   Size: 6065
       File ACL: 0    Directory ACL: 0
       Links: 0   Blockcount: 12
       Fragment:  Address: 0    Number: 0    Size: 0
       ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
       atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
       mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
       dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
       BLOCKS:
       594810 594811 594814 594815 594816 594817
       TOTAL: 6




  Plik ten zajmuje sze blokw. Poniewa jest to mniej ni 12, moemy
  uy debugfs, aby zapisa plik w nowym miejscu, na przykad
  /mnt/recovered.000:



       debugfs:  dump <148003> /mnt/recovered.000




  Oczywicie mona to zrobi rwnie, posugujc si fsgrab. Poka jak
  wyglda takie przykadowe wywoanie:



       # fsgrab -c 2 -s 594810 /dev/hda5 > /mnt/recovered.000
       # fsgrab -c 4 -s 594814 /dev/hda5 >> /mnt/recovered.000




  Zarwno przy korzystaniu z debugfs jak i fsgrab, na kocu pliku
  /mnt/recovered.000 pozostan mieci. Nie ma to wikszego znaczenia.
  atwo mona si ich pozby. Najprostsz metod jest odczytanie pola
  Size w iwle i wpisanie tej wartoci za opcj bs komendy dd:



       # dd count=1 if=/mnt/recovered.000 of=/mnt/resized.000 bs=6065




  Moe si okaza, e jeden lub wicej z blokw zostao straconych,
  bowiem zostay ju nadpisane. Jeeli tak bdzie, po prostu nie miae
  szczcia: bloki te odeszy ju na zawsze. (Wybra sobie, e
  odmontowae je wczeniej!)

  1100..22..  WWiikksszzee pplliikkii

  Problem pojawia si, gdy plik zajmuje wicej ni 12 blokw danych.
  Przypadek ten wymaga pewnej wiedzy o tym jak zbudowany jest system
  plikw UNIX-a.  Dane pliku przechowywane s w jednostkach zwanych
  `blokami'.  Bloki te s numerowane sekwencyjnie.  Kady plik ma
  rwnie `iwze', w ktrym przechowywane s informacje typu:
  waciciel, prawa dostpu i typ. Podobnie jak bloki, iwzy s
  numerowane sekwencyjnie, chocia maj one rne numeracje.  Pozycja w
  katalogu odpowiadajca plikowi skada si z jego nazwy i numeru
  iwza.

  Jednak na postawie tych informacji jdro nie jest jeszcze w stanie
  odnale na partycji danych odpowiadajcych jednej z pozycji w
  katalogu. eby to umoliwi, iwze przechowuje pooenia blokw
  danych zajmowanych przez plik.  Zorganizowane jest to w nastpujcy
  sposb:


    Numery pierwszych 12 blokw danych przechowywane s bezporednio w
     iwle; czasami nazywa si je _b_l_o_k_a_m_i _b_e_z_p_o__r_e_d_n_i_m_i.

    Iwze zawiera numer _p_o__r_e_d_n_i_e_g_o _b_l_o_k_u. Blok poredni zawiera
     numery nastpnych 256 blokw z danymi.

    Iwze zawiera numer _p_o_d_w__j_n_i_e _p_o__r_e_d_n_i_e_g_o _b_l_o_k_u. Blok podwjnie
     poredni zawiera numery dodatkowych 256 blokw porednich.

    Iwze zawiera numer _p_o_t_r__j_n_i_e _p_o__r_e_d_n_i_e_g_o _b_l_o_k_u. Blok potrjnie
     poredni zawiera numery dodatkowych 256 blokw podwjnie
     porednich.

  Przeczytaj to jeszcze raz: wiem, e to jest skomplikowane, ale bardzo
  wane.

  Niestety wszystkie implementacje jdra, a do wersji 2.0.36 podczas
  kasowania pliku zeruj bloki porednie (podwjnie porednie, itd.).
  Jeli Twj plik jest wikszy ni 12 blokw, nie masz gawarancji, e
  bdzie moliwe odnalezienie numerw wszystkich jego blokw, nie mwic
  ju nic o ich zawartoci.

  Jedyn metod jak udao mi si znale, jest oparcie si na
  zaoeniu, e plik nie by pofragmentowany. Jeeli by, masz powany
  problem. Zakadajc, e plik nie by pofragmentowany, istnieje kilka
  sekcji blokw danych, w zalenoci od tego ile blokw danych zajmuje
  plik:


     00 ddoo 1122
        Numery blokw przechowywane s w iwle, jak to byo opisane
        wczeniej.


     1133 ttoo 226688
        Po blokach bezporednich, odlicz jeden na blok poredni, dalej
        znajduje si 256 blokw danych.


     226699 ddoo 6655880044
        Tak jak poprzednio jest: 12 bezporednich blokw, (nieprzydatny)
        blok poredni i 256 blokw. Po tym wszystkim nastpuje
        (nieprzydatny) podwjnie poredni blok oraz 256 powtrze
        jednego (nieprzydatnego) bloku poredniego i 256 blokw danych.



     6655880055 lluubb wwiicceejj
        Pooenie piewszych 65804 blokw jak wyej. Potem potrjnie
        poredni blok i 256 powtrze `sekwecji podwjnie poredniej'.
        Kada podwjnie porednia sekwencja zawiera (nieprzydatny)
        podwjnie poredni blok, po ktrym nastpuje 256 powtrze
        jednego (nieprzydatnego) bloku poredniego i 256 blokw danych.

  Oczywicie, nawet jeli numery blokw, ktre przyjlimy, s poprawne,
  nie ma adnych gwarancji, e dane s w nich s nienaruszone.
  Dodatkowo, im duszy by plik, tym mniejsze szanse, e system
  operacyjny zapisa go bez adnej fragmentacji (za wyjtkiem
  wyjtkowych sytuacji).

  Zaoyem, e rozmiar Twoich blokw wynosi 1024 bajty, tyle ile
  warto standardowa. Jeli Twj blok jest wikszy, niektre z liczb
  podanych wyej zmieni si.  Sprecyzujmy: dopki numer kadego bloku
  ma dugo 4 bajtw, rozmiarbloku/4 jest liczb numerw blokw, ktre
  mog by przechowane w kadym bloku porednim. Kade wystpienie
  liczby 256 we wczeniejszym opisie, zastp na rozmiarbloku/4. Zmianie
  ulegn rwnie ograniczenia na ilo wymaganych blokw.

  Popatrz na przykadowe odzyskiwanie duego pliku.



       debugfs:  stat <1387>
       Inode: 148004   Type: regular    Mode:  0644   Flags: 0x0   Version: 1
       User:   503   Group:   100   Size: 1851347
       File ACL: 0    Directory ACL: 0
       Links: 0   Blockcount: 3616
       Fragment:  Address: 0    Number: 0    Size: 0
       ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
       atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
       mtime: 0x313bf4d7 -- Tue Mar  5 08:01:27 1996
       dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
       BLOCKS:
       8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8583
       TOTAL: 14




  Wydaje si, e mamy pewne szanse, e plik nie jest pofragmentowany.
  Pewne jest tylko, e pierwsze 12 blokw, ktrych numery s zawarte w
  iwle, jest `po kolei'. Moemy wic odtworzy te bloki:



       # fsgrab -c 12 -s 8314 /dev/hda5 > /mnt/recovered.001




  Nastpny blok, wymieniony w iwle, 8326, jest blokiem porednim,
  ktry ignorujemy. Mamy jednak nadziej, e nastepne 256 blokw jest
  naszymi blokami danych (numery 8327 do 8582).



       # fsgrab -c 256 -s 8327 /dev/hda5 >> /mnt/recovered.001




  Ostatnim blokiem wymienionym w iwle jest 8583. Nadal zakadamy, e
  istnieje cigo w blokach. Jest to jednak uzasadnione bowiem:
  ostatnim blokiem danych by blok o numerze 8582 (8327 + 255). Blok
  8583 jest podwjnie poredni i moe by zignorowany. Teraz moe
  nastpi do 256 powtrze bloku poredniego (ktry mona pomin) i
  256 blokw danych.  Troch arytmetyki i ju mona pisa kolejne
  polecenie. Zauwa, e pominlimy podwjnie poredni blok 8583 oraz
  poredni blok 8584 i rozpoczlimy czyta dane od bloku numer 8585.



       # fsgrab -c 256 -s 8585 /dev/hda5 >> /mnt/recovered.001
       # fsgrab -c 256 -s 8842 /dev/hda5 >> /mnt/recovered.001
       # fsgrab -c 256 -s 9099 /dev/hda5 >> /mnt/recovered.001
       # fsgrab -c 256 -s 9356 /dev/hda5 >> /mnt/recovered.001
       # fsgrab -c 256 -s 9613 /dev/hda5 >> /mnt/recovered.001
       # fsgrab -c 256 -s 9870 /dev/hda5 >> /mnt/recovered.001




  Dodajmy to wszystko, zapisalimy do tej pory 12 + (7 * 256) blokw, co
  daje 1804. Wyniki polecenia `stat' dla iwza day nam `blockcount'
  (liczba blokw) rwne 3616. Niestety s to bloki o rozmiarze 512
  bajtw (zaszo z UNIX-a), na prawd potrzebujemy wic 3616/2 = 1808
  blokw o rozmiarze 1024 bajty.  Oznacza to, e musimy jeszcze odnale
  cztery bloki.  Ostatni przeczytany blok danych mia numer 10125.  Tak
  jak to robilimy do tej pory, pomijamy blok poredni (numer 10126) i
  moemy ju zapisa ostatnie cztery bloki.



       # fsgrab -c 4 -s 10127 /dev/hda5 >> /mnt/recovered.001




  Przy pewnym szczciu udao nam si odzyska cay plik.



  1111..  BBeezzppoorreeddnniiee mmooddyyffiikkaaccjjee iiwwzzww

  Metoda ta jest duo prostsza. Jednak, tak jak wspomniaem wczeniej,
  nie moe by jeszcze stosowana do plikw wikszych ni 12 blokw.

  W kadym iwle, ktry chcesz odzyska musisz ustawi licznik
  podcze (linkcount) na jeden i czas skasowania (deletion time) na
  zero. Robi si to za pomoc polecenia mi (modify inode) w debugfs.
  Przykadowe wywoanie, modyfikacja iwza 148003 (tego co wczeniej):


















  debugfs:  mi <148003>
                            Mode    [0100644]
                         User ID    [503]
                        Group ID    [100]
                            Size    [6065]
                   Creation time    [833201524]
               Modification time    [832708049]
                     Access time    [826012887]
                   Deletion time    [833201524] 0
                      Link count    [0] 1
                     Block count    [12]
                      File flags    [0x0]
                       Reserved1    [0]
                        File acl    [0]
                   Directory acl    [0]
                Fragment address    [0]
                 Fragment number    [0]
                   Fragment size    [0]
                 Direct Block #0    [594810]
                 Direct Block #1    [594811]
                 Direct Block #2    [594814]
                 Direct Block #3    [594815]
                 Direct Block #4    [594816]
                 Direct Block #5    [594817]
                 Direct Block #6    [0]
                 Direct Block #7    [0]
                 Direct Block #8    [0]
                 Direct Block #9    [0]
                Direct Block #10    [0]
                Direct Block #11    [0]
                  Indirect Block    [0]
           Double Indirect Block    [0]
           Triple Indirect Block    [0]




  Ustawiem czas skasowania na 0, licznik podcze na 1 i nacisnem
  Enter dla wszystkich innych pl.  Jest to pewn niedogodnoci, jeeli
  masz wiele plikw do odzyskania.  Myl jednak, e mona z tym y.
  Jeli oczekujesz wygody, lepiej zacznij uywa graficznego `systemu
  operacyjnego' ze licznym `Koszem na mieci'.

  Przy okazji: polecenie mi pokazuje `Czas stworzenia' (Creation time) w
  iwle. To kamstwo ! (lub, jak kto woli, pomyka.) Prawda jest taka,
  e nie mona w systemie plikw UNIX-a stwierdzi kiedy dany plik
  zosta utworzony. Pole st_ctime w struct stat zawiera `czas zmiany
  iwza', czyli czas ostaniej zmiany, ktrego z parametrw iwza.  To
  tyle z dzisiejszej lekcji.

  Nowsze wersje debugfs ni moja, prawdopodobnie nie wywietalaj
  niektrych pl w iwle (szczeglnie, Reserved1 i Fragment).

  Po zmianie w iwzach, moesz wyj z debugfs i napisa:



       # e2fsck -f /dev/hda5




  Pomys polega na tym, e kady ze skasowanych plikw zosta
  odkasowany, ale nie pojawi si w adnym katalogu.  Program e2fsck
  umie to wykry i doda pozycj dla kadego z nich w katalogu
  /lost+found systemu plikw. (Jeeli partycja bya zamontowana w /usr,
  pliki pojawi si w /usr/lost+found, gdy j zamontujesz.) Prac, ktr
  musisz jeszcze zrobi, to nadanie plikom nazw i umieszczenie ich we
  waciwym miejscu drzewa plikw.

  Po uruchomieniu e2fsck, wywietli Ci on troch informacji, ale zada
  rwnie pytania, ktre zniszczenia naprawia. Odpowiadaj `yes' (tak)
  na wszystko co dotyczy `summary information' lub iwzw, ktre
  zmieniae.  Reszt pozostawiam do Twojej decyzji, pamitaj, e nie
  jest najlepsz metod odpowiadanie `tak' na wszystkie pytania.  Po
  skoczeniu pracy przez e2fsck, moesz ponownie zamontowa system
  plikw.

  Istnieje alternatywne rozwizanie do pozwolenia, aby e2fsck utworzy
  pliki w /lost+found. Moesz uy debugfs i stworzy w systemie plikw
  doczenie (link) do iwza.  Suy do tego polecenie link w debugfs,
  po zmianach w samym iwle:



       debugfs:  link <148003> foo.txt




  W ten sposb powstanie w biecym katalogu plik o nazwie foo.txt;
  foo.txt bdzie Twoim odzyskanym plikiem.  Nadal musisz jednak
  uruchomi e2fsck, aby uaktualni informacje oglne, liczniki blokw
  itp. itd.



  1122..  CCzzyy bbddzziiee ttoo kkiieeddyy aattwwiieejjsszzee??

  Tak.  Waciwie, mam nadziej, e tak.  Chocia, gdy to pisz,
  aktualna, stabilna wersja jdra (seria 2.0.x) zeruje bloki porednie.
  Wersje serii rozwojowej 2.1.x i stabilnej 2.2.x nie maj tej wady.
  Dzisiaj, 2 lutego 1999 mino dopiero kilka dni od wydania jdra
  2.2.1; prawdopodobnie pojawi si ono w dystrybucjach za jeden, dwa
  miesice.

  Kiedy wersje jdra rozwi problem zerowania blokw porednich, wiele
  moich rcznych technik modyfikacji iwzw nie bdzie ju potrzebnych.
  W tym samym czasie stanie si moliwe uycie polecenia dump w debugfs
  dla duych plikw i innych programw narzdziowych do odzyskiwania
  plikw.


  1133..  CCzzyy ss jjaakkiiee pprrooggrraammyy aauuttoommaattyyzzuujjccee tteenn pprroocceess??

  Pewnie, e s. Niestety cierpi one na te same problemy co rczna
  technika zmian w iwzach: bloki porednie s nieodzyskiwalne. Warto
  im si przyjrze, bowiem wydaje si, e ograniczenie to wkrtce
  zniknie.

  Napisaem program e2recover, ktry jest waciwie tylko Perl-ow
  otoczk dookoa fsgrab. Stara si on poradzi sobie z wyzerowanymi
  blokami porednimi i wydaje sie, e dziaa cakiem niele dla duych
  plikw, ktre nie ulegy fragmentacji.  Ustawia poprawne prawa dostpu
  (i waciciela, gdy to jest moliwe). Upewnia si rwnie, e
  odzyskiwany plik ma poprawny rozmiar.

  Program e2recover by planowany jako cz powanych zmian w tym
  Howto; oznacza to niestety, e wicej uytecznej dokumentacji do
  e2recover bdzie zamieszczone dopiero w nowej wersji tego dokumentu.
  Jednak i teraz moe on si komu przyda; mona go cign z mojej
  strony domowej <http://pobox.com/~aaronc/tech/e2-undel/>, i wkrtce z
  Metalab-a (jest ju w Polsce - Sunsite
  <http://sunsite.icm.edu.pl/pub/Linux/sunsite/utils/file/>).

  Scott D. Heavner jest autorem programu lde, the Linux Disk Editor.
  Moe on by uywany zarwno jako binarny edytor dysku i jako
  odpowiednik debugfs dla systemw plikw ext2 i minix, a nawet dla
  systemu plikw xia (chocia wsparcie dla xia przestao by dostpne w
  jdrach 2.1.x i 2.2.x).  Zawarto w nim kilka pomysw wspomagajcych
  odzyskiwanie skasowanych plikw: ledzenie listy blokw tworzcych
  plik i wyszukiwanie danych na dysku. Zawiera on take cakiem
  uyteczn dokumentacj o podstawach systemu plikw oraz jak go uywa
  do odzyskiwania plikw skasowanych. Wersja 2.4 lde jest dostpna na
  Metalab-ie
  <http://metalab.unc.edu/pub/Linux/system/filesystems/lde-2.4.tar.gz>
  (i kopiach, w Polsce - Sunsite
  <http://sunsite.icm.edu.pl/pub/Linux/sunsite/system/filesystems/lde-2.4.tar.gz>),
  lub na stronie domowej autora
  <http://www.geocities.com/CapeCanaveral/Lab/7731/lde.html>.

  Inne moliwoci oferowane s przez GNU Midnight Commander, mc. Jest to
  penoekranowe narzdzie do zarzdzania plikami, oparte na znanym w
  rodowisku MS-DOS programie o nazwie `NC'.  mc obsuguje mysz zarwno
  na konsoli, jak i w oknie xterm-a, dostarcza mechanizm wirtualnych
  systemw plikw, co umoliwia triki takie jak cd do archiwum tar.
  Odzyskiwanie plikw obsugiwane jest przez jeden z takich wirtualnych
  systemw plikw.  Wszystko to brzmi bardzo zachcajco, ale musz
  przyzna, e nie uywam tego programu -- wol staromodne polecenia
  powoki.

  Aby uywa moliwoci odzyskiwania skasowanych plikw, musisz
  skonfigurowa program z opcj --with-ext2undel; bdziesz rwnie
  potrzebowa bibliotek w wersji rozwojowej i niektrych plikw
  zawartych w pakiecie e2fsprogs. W ten sposb zbudowana jest wersja
  dostarczana w Debian GNU/Linux <http://www.debian.org/>; tak samo moe
  by w innych dystrybucjach. Teraz moesz po prostu kaza mu cd
  undel:/dev/hda5, i otrzymasz `zawarto katalogu' ze skasowanymi
  plikami. Jak wiele innych i ten program bardzo le radzi sobie z
  zerowaniem blokw porednich -- przewanie odtwarza tylko pierwsze 12k
  wikszych plikw.

  Aktualn wersj mona cign z serwera ftp the Midnight Commander
  <ftp://ftp.nuclecu.unam.mx/Midnight/devel/>.



  1144..  KKoollooffoonn

  Mam zamiar regularnie uaktualnia ten dokument tak dugo jak bd mia
  wystarczajco duo czasu i co ciekawego do powiedzenia. Oznacza to,
  e bardzo mi zaley na komentarzach od czytelnikw.  Czy moje pisanie
  moe by bardziej zrozumiae? Czy mylicie o czym, co uczynioby
  problem prostszym?  Jest jaki program, ktry robi to wszystko
  automatycznie? Jeeli masz co do powiedzenia o tym dokumencie, albo o
  fsgrab, albo o e2recover, napisz do mnie aaronc@pobox.com.



  1155..  WWyyrraazzyy uuzznnaanniiaa ii bbiibblliiooggrraaffiiaa


       `Jeeli widz dalej od innych, to dlatego, e stoj na
       ramionach olbrzymw.' (Isaac Newton)


  To mini-Howto wywodzi si z listu zamieszczonego w grupie
  comp.os.linux.misc przez Robina Glovera swrglovr@met.rdg.ac.uk.
  Chciabym podziekowa Robinowi za wspaniaomylne pozwolenie na
  przetworzenie jego pomysw w to mini-Howto.

  Korzystajc z okazji, chciabym jeszcze raz podzikowa wszystkim,
  ktrzy napisali do mnie o tym Howto.  Otrzymywanie wyrazw
  wdziecznoci czyni prac wart wysiku.

  Niektre odnoniki bibliograficzne:


    FFrriisscchh, leen (1995), _E_s_s_e_n_t_i_a_l _S_y_s_t_e_m _A_d_m_i_n_i_s_t_r_a_t_i_o_n, second e
     O'Reilly and Associates, Inc., ISBN: 1-56592-127-5.

    GGaarrffiinnkkeell, Simson, Daniel WWeeiissee and Steven SSttrraassssmmaannnn (1994), _T_h_e
     _U_n_i_x_-_H_a_t_e_r_s _H_a_n_d_b_o_o_k, IDG Books, ISBN: 1-56884-203-1.  Wikszo
     tej ksiki wypeniaj jednynie modociane jki ludzi, ktrzy myl
     e _i_c_h system operacyjny by o wiele lepszy od Unix-a; a reszta
     ksiki nie dotyczy Ci, jeeli uywasz dobrego otoczenia
     uytkownika jakim jest GNU.  S tam jednak pewne ciekawe rzeczy; na
     przykad, dyskusja o tym jak atwo jest skasowa plik pod Unix-em
     warta jest przeczytania.

    GGlloovveerr, Robin (31 Jan 1996), _H_O_W_-_T_O _: _u_n_d_e_l_e_t_e _l_i_n_u_x _f_i_l_e_s
     _(_e_x_t_2_f_s_/_d_e_b_u_g_f_s_), comp.os.linux.misc Usenet posting.

    PPeeeekk, Jerry, Tim OO''RReeiillllyy, Mike LLoouukkiiddeess et al (1993), _U_N_I_X _P_o_w_e_r
     _T_o_o_l_s, O'Reilly and Associates, Inc./Random House, Inc., ISBN:
     0-679-79073-X.  Second edition, 1998.



  1166..  FFoorrmmaallnnooccii

  Wszystkie znaki towarowe s wasnoci ich prawowitych wacicieli.
  Konkretnie:


    _M_S_-_D_O_S i _W_i_n_d_o_w_s s znakami towarowymi Microsoftu
     <http://www.microsoft.com/>.

    _U_N_I_X jest znakiem towarowym the Open Group
     <http://www.opengroup.org/>.

    _L_i_n_u_x jest znakiem towarowym zarejestrowanym w USA i kilku innych
     pastwach dla Linusa Torvalds.

  Prawa autorskie do tego dokumentu 1997, 1999 posiada Aaron Crane
  aaronc@pobox.com.  Moe on by darmowo rozpowszechniany w caoci,
  cznie z t not autorsk.  Nie moe by zmieniany bez zgody autora
  lub koordynatora Linux Documentation Project HOWTO.  Nie dotyczy to
  tylko kopiowania jego czci w celu przegldania lub cytowania; w
  takim przypadku, czci te musz by poprawnymi cytatami i nie musz
  zawiera noty o prawach autorskich.

  Autor oczekuje, ale nie wymaga, e ten kto bdzie chcia sprzedawa
  kopie tego dokumentu, niezalenie od tego, czy na noniku
  elektronicznym, czy papierowym, poinformuje jego lub koordynatora
  projektu Linux HOWTO o swoich zamiarach.

  Koordynatorem projektu Linux HOWTO jest aktulanie Tim Bynum linux-
  howto@sunsite.unc.edu.





  1177..  OOdd ttuummaacczzaa

  Staraem si, aby tumaczenie byo najwierniejsze z moliwych. Dlatego
  nie ma adnych zmian w stosunku do orginau, za wyjtkiem odnonikw
  do polskiej kopii serwera Metalab na Sunsite.icm.edu.pl.

  Czekam na komentarze pod adresem: Bartosz Sawicki
  sawickib@ee.pw.edu.pl.