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.
|