÷ƒ’À;è TeX output 2003.11.26:1327‹ÿÿÿÿ Û_2 ý ~? ÕÁ ýZݺóþÖëI½q½qecss2074¼Linux–fÑExt2fs“Undeletion“mini-HO‘ÿwmWTOŽ¤ ®„ØcÕÁGŽŽ¡ó 1ê± ecrm1000¹Aaron–U Crane,“óqLË ecit1000½aaronc@pobox.com’åz÷¹v1.3,“2“F‘ÿ*¸ebbraio“1999Ž¡Ÿ&°óŒ6 ecss1000¾Immaginate:‘A7pGer–ôŽgli“ultimi“tre“gioš¸èrni“non“avete“do˜rmito,›ßnon“avete“mangiato,˜non“avete“nemmeno“fatto“la“doGccia.Ž¡La–@%vostra“foga“di“hackš¸èer“vi“ha“nalmente“ricompGensato:‘gavete“nito“il“p˜rogramma“che“vi“pGo˜rter€à“fama“mondiale.Ž¡T‘ÿ*¸utto–=Öquello“che“dovete“faš¸ère“€è“fa˜rne“un“ta˜r“e“metterlo“su“Metalab.‘+¢Oh,‘xe“cancella˜re“tutti“quei“le“di“backupŽ¡di–>`Emacs.›-AQuindi“date“óqLË ectt1000ºrm–?¬*“¾.˜E,–>`troppšGo“ta¸èrdi,‘x°notate“lo“spazio“di“tropp˜o“in“quel“comando.‘-AA¸èvete“app˜enaŽ¡cancellato–®la“vostra“óø8‹ ecsi1000¿magnum“opus‘Ç ¾!›È)Ma“ecco“l'aiuto.˜Questo“doGcumento“vi“p¸èresenta“una“discussione“su“comeŽ¡recupGeraš¸ère–U i“le“cancellati“da“un“lesystem“Second“Extended.‘q€Cos€ì,“fo˜rse,“pGotrete“fa˜re“uscire“quel“p˜rogramma...ŽŸ(Àœó&Lt$ffffecbx1440ÁIndiceŽ©Øó]fŒ ecbx1000Â1Ž‘ÿIn®>troQÂduzione’€Ó2ŽŽ¤ؼ‘ÿ¹1.1Ž‘%ý¡Revisioni‘¦+‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï2ŽŽ¡‘%ý¡1.1.1Ž‘EûŸMoGdicš¸èhe–U nella“v˜ersione“1.1‘í‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¡‘%ý¡1.1.2Ž‘EûŸMoGdicš¸èhe–U nella“v˜ersione“1.2‘í‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¡‘%ý¡1.1.3Ž‘EûŸMoGdicš¸èhe–U nella“v˜ersione“1.3‘í‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¡‘ÿ1.2Ž‘%ý¡Do•¸èv“e–U si“pu€ò“troš¸èv‘ÿqÐare“questo“doGcumen˜to‘9‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¦Â2Ž‘ÿCome–Õfare“a“non“cancellare“i“le’gh4ŽŽ¦3Ž‘ÿChe–ÕpšQÂercen®>tuale“di“recup˜ero“mi“p˜osso“asp˜ettare?’ÊT|5ŽŽ¦4Ž‘ÿE–Õallora,“come“faccio“a“recupQÂerare“un“le?’ìöñ6ŽŽ¦5Ž‘ÿSmon®>tare–Õil“lesystem’QÌ_6ŽŽ¦6Ž‘ÿPrepararsi–Õalla“mošQÂdica“diretta“degli“ino˜de’èÇ7ŽŽ¦7Ž‘ÿPrepararsi–Õalla“scrittura“dei“dati“da“qualc®>he“altra“parte’ª¿´7ŽŽ¦8Ž‘ÿT‘ÿ ºro®>v‘ÿ\|are–Õgli“inoQÂde“cancellati’8¼ß8ŽŽ¦9Ž‘ÿOttenere–Õi“dettagli“degli“inoQÂde’(â9ŽŽ¦10Ž‘ÿRecupšQÂerare–Õi“blo˜cc®>hi“di“dati’4p²9ŽŽ¡‘ÿ¹10.1Ž‘%ý¡File‘U corti‘­G‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï9ŽŽ¡‘ÿ10.2Ž‘%ý¡File–U pi€ù“lunghi‘˜Û‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?10ŽŽ¦Â11Ž‘ÿMošQÂdicare–Õgli“ino˜de“direttamen®>te’ä¢12ŽŽ¦12Ž‘ÿDiv•®>en“ter€à–Õpi€ù“facile“in“futuro?’"®@14ŽŽŽŽŒ‹* Û_2 ý ~?Ÿ„€ÕÁGŽÂ1.‘ñ8In®>troQÂduzione’~¯œ¹2ŽŽ ÕÁ ýV¯Â13Ž‘ÿCi–Õsono“strumen®>ti“pšQÂer“automatizzare“questo“pro˜cesso?’©É]14ŽŽ¤Ø14Ž‘ÿColophon’‹[C15ŽŽ¡15Ž‘ÿCrediti–Õe“ringraziamen®>ti’Aè¾15ŽŽ¡16Ž‘ÿLegalese’‘x¿16ŽŽŸ(ÀœÁ1Ž‘ÁInctropœduzioneŽŸ¿:¹Questo–%gmini-hoš¸èwto“€è“un“ten˜tativ˜o“di“fornire“suggerimen˜ti“su“come“recupGerare“le“cancellati“da“un“lesystemŽ¤ ®ext2.‘q€Con•¸ètiene›U anc“he˜una˜brev“e˜discussione˜su˜come˜evitare˜a˜priori˜di˜cancellare˜dei˜le.Ž©ؼLa–Y¸mia“inš¸ètenzione“€è“c˜he“sia“utile“sicuramen˜te“pšGer“le“p˜ersone“c¸èhe“abbiano“app˜ena“a¸èvuto,–ZÞdiciamo,“un‘Y¸piccoloŽ¡incidenš¸ète–K²con“ºrm¹;,‘‰Wma“spGero“c˜he“v˜enga“letto“com˜unque.‘U7Non“si“sa“mai,‘‰Wun“giorno“queste“informazioni“viŽ¡p•Gotrebb“ero–U salv‘ÿqÐare“la“pGelle.Ž¦Il–#testo“assume“una“conoscenza“di“base“dei“lesystem“UNIX‘óin“generale,‘=¤ma“spGero“c¸èhe“sia“accessibile“allaŽ¡maggior–‹Mparte“degli“utenš¸èti“Lin˜ux.‘Se“siete“dei“v˜eri“principian˜ti,‘˜Øho“paura“c˜he“il“recupGero“di“le“sotto“Lin˜uxŽ¡ó½HЃ ecti1000Ãrichie‘ÿ}/da‘u¹una–U certa“conoscenza“tecnica,“almeno“al“momen¸èto.Ž¦Non–q1pšGotrete“recup˜erare“dei“le“cancellati“da“un“lesystem“ext2“senza“a•¸èv“ere–q1almeno“accesso“in“lettura“alŽ¡dispGositivš¸èo–…ªsico“in“cui“il“le“si“tro˜v–ÿqÐa˜v“a.‘In–…ªgenerale,‘ÑÍquesto“signica“c˜he“do˜v˜ete“essere“roGot,‘ÑÍma“alcuneŽ¡distribuzioni–“(come“la“ÃDebian‘WaGNU/Linux“¹)“hanno“impšGostato“un“grupp˜o“ºdisk“¹i“cui“mem¸èbri“hanno“accesso“aŽ¡tali–AÎdispGositivi.‘kVi“servš¸èe“anc˜he“ºdebugfs“¹dal“pacc˜hetto“ºe2fsprogs¹,‘E«c˜he“do˜vrebbGe“essere“stato“installato“dallaŽ¡distribuzione–U cš¸èhe“a˜v˜ete.Ž¦P•¸èerc“h€é–ƒho“scritto“questo“doGcumenš¸èto?‘üöPi€ù“c˜he“altro“€è“nato“dalla“mia“espGerienza“con“un“particolarmen˜teŽ¡stupido–’¿e“disastroso“comando“ºrm‘?¬-r“¹da“roGot.‘*^Ho“cancellato“circa“97“le“JPEG‘’mc¸èhe“mi“serviv‘ÿqÐano“e“nonŽ¡aš¸èvrei– pGotuto“quasi“sicuramen˜te“recupGerare“da“altre“fon˜ti.‘X$Usando“alcuni“suggerimen˜ti“utili“(v˜edere“la“sezioneŽ¡15–œó(Ringraziamenš¸èti“e“bibliograa))“e“molta“testardaggine,‘îçho“recupGerato“91“le“in˜tegri.‘HøSono“riuscito“aŽ¡recupšGerare–¦Àalmeno“delle“parti“di“5“dei“restan¸èti“(abbastanza“p˜er“v¸èedere“quale“era“la“gura).‘f_Solo“uno“€èŽ¡andato–šÑpGerso“del“tutto,‘¬=e“ancš¸èhe“di“questo“sono“quasi“sicuro“c˜he“non“ne“ho“pGersi“pi€ù“di“1024“b˜yte“(anc˜he“seŽ¡sfortunatamenš¸ète–,!erano“all'inizio“del“le:‘]e“non“so“nien˜te“del“formato“dei“le“JFIF‘,e“ho“fatto“tutto“quello“c˜heŽ¡pGotev¸èo).Ž¦Discuter€ò–U pi€ù“a•¸èv‘ÿqÐan“ti–U quale“pšGercen¸ètuale“di“recup˜ero“ci“si“pu€ò“asp˜ettare“p˜er“i“le“cancellati.ŽŸ#Ãó¥!¢N ecbx1200Å1.1Ž‘¾RevisioniŽŸMª¹Le–U v‘ÿqÐarie“revisioni“pubblicš¸èhe“di“questo“doGcumen˜to“(e“le“loro“date“di“pubblicazione)“sono“le“seguen˜ti:ŽŸؼ‘ó !",š cmsy10¸ŽŽŽ‘¹v1.0–U del“18“Gennaio“1997Ž¤®‘¸ŽŽŽ‘¹v1.1–U del“23“Luglio“1997“(vš¸èedere“la“sezione“1.1.1“(MoGdic˜he“nella“v1.1))Ž¡‘¸ŽŽŽ‘¹v1.2–U del“4“Agosto“1997“(vš¸èedere“la“sezione“1.1.2“(MoGdic˜he“nella“v1.2))Ž¡‘¸ŽŽŽ‘¹v1.3–U del“2“F‘ÿ*¸ebbraio“1999“(vš¸èedere“la“sezione“1.1.3“(MoGdic˜he“nella“v1.3))ŽŽŽŒ‹РÛ_2 ý ~?Ÿ„€ÕÁGŽÂ1.‘ñ8In®>troQÂduzione’~¯œ¹3ŽŽ ÕÁ ýV¯Â1.1.1Ž‘#!\MoQÂdicš®>he–Õnella“v˜ersione“1.1ŽŸMª¹Quali–ÌsmoGdicš¸èhe“sono“state“fatte“in“questa“v˜ersione?‘×yPrima“di“tutto,‘êHho“corretto“il“think˜o“nell'esempio“delŽ¤ ®recupšGero–¦žle.‘7UGrazie“a“tutti“quelli“c¸èhe“mi“hanno“scritto:‘?sp˜ero“di“a•¸èv“ere–¦žimparato“ad“essere“pi€ù“atten¸èto“quandoŽ¡scrivš¸èo–U delle“in˜terazioni“con“i“programmi.Ž©ؼSeconda–¨Ïcosa,‘ý»ho“riscritto“la“discussione“sullo“scš¸èhema“del“lesystem“UNIX,“in“moGdo“c˜he“sia,–ý»spGero,“pi€ùŽ¡comprensibile.‘ÓNon–Žæne“ero“molto“con•¸èten“to–Žæall'inizio,‘Xe“i“commenš¸èti“di“alcune“pGersone“mi“hanno“indicato“c˜heŽ¡non–U era“c¸èhiaro.Ž¦T‘ÿ*¸erzo,‘“ ho–bƒrimosso“il“.tar.gz“uuencošGdato“di“ºfsgrab“¹c¸èhe“era“nel“mezzo“del“le.‘ ¢Il“programma“€è“adesso“disp˜onibileŽ¡dalŽ¦Ãmio–“°sito“web‘U ºhttp://pobox.com/~aaronc/tech/fsgrab-‘€1.2.tar.gzŽ¦¹e–U presto“do¸èvrebbGe“arriv‘ÿqÐare“suŽ¦ÃMetalab‘U ºhttp://metalab.unc.edu/pub/Linux/utils/file/Ž¦¹(e–U sui“mirror).Ž¦Quarta–µÓcosa,‘Îil“doGcumenš¸èto“€è“stato“tradotto“nel“linguaggio“SGML‘µºusato“dal“Lin˜ux“DoGcumen˜tation“Pro‘Ž0ject.Ž¡Questo–ƈlinguaggio“pu€ò“essere“facilmenš¸ète“con˜v˜ertito“in“molti“altri“linguaggi“(compreso“l'HTML‘Æke“il“LaT‘ÿ*¸eX)Ž¡pGer–Ÿâessere“visualizzato“e“stampato“facilmenš¸ète.‘QÆUno“dei“v‘ÿqÐan˜taggi“di“questa“cosa“€è“c˜he“€è“pi€ù“facile“a˜v˜ere“unaŽ¡bGella–(fvš¸èersione“cartacea,‘1Xun'altro“€è“c˜he“il“doGcumen˜to“ha“i“riferimen˜ti“in˜terni“e“i“link“ipGertestuali“quando“vieneŽ¡visualizzato–U sul“w¸èeb.ŽŸ ÖÂ1.1.2Ž‘#!\MoQÂdicš®>he–Õnella“v˜ersione“1.2ŽŸMª¹Questa–Òrevisione“ha“solo“delle“moGdicš¸èhe“incremen˜tali.‘—Consiste“principalmen˜te“di“moGdic˜he“suggerite“daiŽ¡lettori,–U una“delle“quali“€è“particolarmenš¸ète“impGortan˜te.Ž¦La–òÍprima“mošGdica“€è“stata“suggerita“da“Egil“K‘ÿ*¸v‘ÿqÐaleb˜erg“½egil@kvaleberg.no‘?¬¹,‘wc¸èhe“ha“fatto“notare“il“comandoŽ¡ºdump–U ¹in“ºdebugfs¹.‘q€Grazie“ancora,“Egil.Ž¦La–`7seconda“€è“quella“di“menzionare“l'uso“di“ºchattr“¹pšGer“evitare“di“cancellare“i“le“imp˜ortan¸èti.‘’ÆGrazie“adŽ¡Herman–U Sujis“½H.P.M.Suijs@kub.nl‘?¬¹.Ž¦L'abstract– î€è“stato“rivisto.‘ÔéSono“stati“aggiunš¸èti“degli“URL‘ ¹pGer“le“organizzazioni“ed“il“soft˜w˜are.‘ÔéSono“stateŽ¡appšGortate–U altre“mo˜dic¸èhe“minori“(compresi“alcuni“errori“di“battitura“e“cose“del“genere).ŽŸ ÖÂ1.1.3Ž‘#!\MoQÂdicš®>he–Õnella“v˜ersione“1.3ŽŸMª¹Ancš¸èhe–Ose“questa“€è“la“prima“v˜ersione“dopšGo“17“mesi,‘PL€è“stato“mo˜dicato“molto“p˜o˜co.‘o}Questa“v¸èersione“correggeŽ¡solo–halcuni“piccoli“errori“(refusi,›=úURL‘8moGdicati“e“cos€ì“via),˜ed“aggiorna“alcune“parti“cš¸èhe“erano“div˜en˜tateŽ¡datatissime.‘q€Ah,–U e“ho“cam¸èbiato“`Sunsite'“in“`Metalab'.Ž¦Questa–|vš¸èersione“sar€à“l'ultima“prima“della“2.0,‘…¾c˜he“si“spGera“sar€à“un“Ho˜wto“completo.‘æ.Sto“la˜v˜orando“su“delleŽ¡moGdicš¸èhe–U sostanziali“c˜he“giustic˜heranno“un“incremen˜to“nel“n˜umero“della“v˜ersione.ŽŸ#ÃÅ1.2Ž‘¾Do• v“e–¸si“pu€ò“troš v‘ÿ@ are“questo“do_úcumen˜toŽŸMª¹L'ultima–U vš¸èersione“pubblica“del“doGcumen˜to“do˜vrebbšGe“essere“sempre“disp˜onibile“in“formato“testo“nelŽ¦Ãsito–“°del“Linux“Do›ÿ}/cumentation“Pr˜oje˜ct‘U ºhttp://metalab.unc.edu/LDP/Ž¦¹(e–U nei“suoi“mirror).ŽŽŽŒ‹ ù Û_2 ý ~?Ÿ„€ÕÁGŽÂ2.‘ñ8Come–Õfare“a“non“cancellare“i“le’Cü¹4ŽŽ ÕÁ ýV¯L'ultima–U vš¸èersione“viene“anc˜he“ten˜uta“sulŽ¤ؼÃmio–“°sito“web‘U ºhttp://pobox.com/~aaronc/Ž¡¹in–U div¸èersi“formati:ŽŸؼ‘¸ŽŽŽ‘Ãsor‘ÿ}/gente‘_SGML‘üEºhttp://pobox.com/~aaronc/tech/e2-‘€undel/howto.sgml–ü²¹.‘ h7Il“sorgen¸ète“come“l'hoŽ¤ ®‘scritto,–U usando“il“pacc¸èhetto“SGML“toGols.Ž©®‘¸ŽŽŽ‘ÃHTML‘pçºhttp://pobox.com/~aaronc/tech/e2-‘€undel/html/–pî¹.‘ÄëHTML,“generato“automaticamen¸ète“dalŽ¡‘sorgen¸ète‘U SGML.Ž¦‘¸ŽŽŽ‘ÃT‘ÿ;Èesto‘Epur‘ÿ}/o–ÿººhttp://pobox.com/~aaronc/tech/e2-‘€undel/howto.txt“¹.‘U T‘ÿ*¸esto“puro,‘Ïanc¸èh'esso“generatoŽ¡‘automaticamenš¸ète–U dal“sorgen˜te“SGML.ŽŸ(ÀœÁ2Ž‘ÁCome–G\fare“a“non“cancellare“i“leŽŸ¿:¹€È‘“fvitale–“—ricordare“cš¸èhe“lin˜ux“non“€è“come“l'MS-DOS‘“fquando“si“parla“di“recupGerare“le“cancellati.‘0ýP˜er“l'MS-DOSŽ¡(e–}Òla“sua“progenie“bastarda“Windoš¸èws“95)“generalmen˜te“recupGerare“un“le“€è“una“cosa“piuttosto“semplice“-“ilŽ¡`sistema–§copGerativš¸èo'“(uso“il“termine“in“un'accezione“molto“ampia)“comprende“addirittura“anc˜he“un“programmaŽ¡cš¸èhe–U automatizza“la“maggior“parte“del“proGcesso.‘q€Questo“non“€è“il“caso“di“Lin˜ux.Ž©ؼQuindi,–U regola“nš¸èumero“uno“(il“primo“comandamen˜to,“se“v˜olete):Ž¤ؼ‘'ÿÂTENETE–ÕI“BA®>CKUPŽ¡¹in– ùqualsiasi“caso.‘YPš¸èensate“a“tutti“i“v˜ostri“dati;‘$[forse,›šcome“me,˜a•¸èv“ete– ùv‘ÿqÐari“anni“di“email,˜con¸ètatti,˜programmi,Ž¤ ®la•¸èv“ori›Ý|c“he˜si˜sono˜accum“ulati˜sul˜v“ostro˜computer.‘IŸP“ensate˜a˜come˜vi˜sen“tireste˜se˜il˜v“ostro˜disco˜si˜rompGesse,Ž¡o–33se““Signore“salv‘ÿqÐaci!›f1“un“crac•¸èk“er–33vi“cancellasse“tutto“l'hard“disk.˜Non“€è“pGoi“cos€ì“inconsueto:‘`Šio“sono“statoŽ¡in–Muconš¸ètatto“come“molte“pGersone“in“situazioni“del“genere.‘nòEsorto“tutti“i“Lin˜uxisti“di“buona“v˜olon˜t€à“a“uscire“eŽ¡comprare–fªun“buon“mezzo“di“bac¸èkup,‘k pšGensare“ad“una“buona“p˜olicy“di“bac¸èkup“ed“a“Ãusarla‘ÄU¹.‘¦Io“p˜ersonalmen¸èteŽ¡uso–>âun“secondo“disco“su“un'altra“macc¸èhina,‘CUe“faccio“un“mirror“p•Gerio“dico–>âdella“mia“home“directory“su“di“essoŽ¡via–ÔIethernet.‘îûPš¸èer“altre“informazioni“su“come“fare“una“pGolicy“di“bac˜kup,‘ôleggete“il“F‘ÿ*¸risc˜h“(1995)“(v˜edere“laŽ¡sezione–U 15“(Bibliograa“e“Ringraziamen¸èti)).Ž¦In–½¸mancanza“di“bacš¸èkup,‘×Þcosa“fare?‘«H(o“anc˜he“in“presenza“di“bac˜kup:‘B°se“a˜v˜ete“dei“dati“impGortan˜ti“€è,‘×ÞmeglioŽ¡andarci–U coi“piedi“di“piom¸èbGo).Ž¦Pro¸èv‘ÿqÐate–ˆad“impšGostare“i“p˜ermessi“dei“le“imp˜ortan¸èti“a“440“(o“meno):‘S´negarvi“il“p˜ermesso“di“cancellare“dei“leŽ¡implica–Ê´una“conferma“esplicita“prima“di“cancellarli“(io“comš¸èunque“tro˜v˜o“c˜he,‘æcse“sto“cancellando“ricorsiv‘ÿqÐamen˜teŽ¡una–vódirectory“con“ºrm‘?¬-r¹,‘ginš¸èterrompGo“il“programma“alla“prima“o“seconda“ric˜hiesta“di“cancellazione“e“lo“rid€òŽ¡come‘U ºrm‘?¬-rf¹).Ž¦Un–²Vbuon“trucco“pGer“i“le“selezionati“€è“crearne“un“hard“link“in“una“directory“nascosta.‘;=Ho“sen¸ètito“una“storia“diŽ¡un–÷´amministratore“di“sistema“cš¸èhe“ha“cancellato“ripGetutamen˜te“º/etc/passwd“¹pGer“errore“(quindi“praticamen˜teŽ¡distruggendo–U met€à“del“sistema).‘q€Una“delle“soluzioni“sarebbšGe“stata“fare“una“cosa“del“genere“(da“ro˜ot):Ž¤´å‘óqLË ectt0900Ç#–¹Nmkdir“/.backupŽŸ Š=‘#–¹Nln“/etc/passwd“/.backupŽŸؼ¹Cancellare–U tutto“il“con•¸èten“uto›U ric“hiede˜un˜pGo'˜di˜sforzo:‘q€se˜diteŽ¡‘Ç#–¹Nrm“/etc/passwdŽŽŽŒ‹.R Û_2 ý ~?Ÿ„€ÕÁGŽÂ3.‘ñ8Che–ÕpšQÂercen®>tuale“di“recup˜ero“mi“p˜osso“asp˜ettare?’È1¹5ŽŽ ÕÁ ýV¯fareŽ©‹A‘Ç#–¹Nln“/.backup/passwd“/etcŽŸ¯¹la–¤ recupGerer€à.‘6€Certo,›džnon“aiuta“nel“caso“in“cui“abbiate“so¸èvrascritto“il“le,˜quindi“tenete“comš¸èunque“dei“bac˜kup.ŽŸؼSu–un“lesystem“ext2“€è“pšGossibile“usare“degli“attributi“ext2“p˜er“proteggere“i“le.‘¢SQuesti“attributi“p˜ossonoŽ¤ ®essere–sMmošGdicati“con“il“comando“ºchattr¹.‘ÌEsiste“un“attributo“`app˜end-only'“(sola“aggiun¸èta):‘­Ûun“le“conŽ¡questo–î»attributo“non“pu€ò“essere“cancellato,‘"ma“pGossono“essere“solo“aggiun¸èti“dei“dati.‘>QSe“una“directory“haŽ¡questo–Ddattributo,›€5qualsiasi“le“o“directory“in“essa“con•¸èten“uti–Ddpu€ò“essere“moGdicato“come“il“solito,˜ma“nonŽ¡pšGossono–U essere“cancellati“dei“le.‘q€L'attributo“`app˜end-only'“si“imp˜osta“con“il“comandoŽ¦‘Ç$–¹Nchattr“+a“FILE...ŽŸ¯¹C'€è–Sancš¸èhe“un“attributo“`imm˜utable'“(non“moGdicabile),‘Syc˜he“si“pu€ò“impšGostare“o“togliere“solo“da“ro˜ot.‘pÐUn“leŽ¡o–¡ôuna“directory“con“questo“attributo“non“pu€ò“essere“mošGdicato,–µ)cancellato,“rinominato–¡ôe“non“ci“si“p˜ossonoŽ¡fare–U hard“link.‘q€Si“impGosta“cos€ì:Ž¦‘Ç#–¹Nchattr“+i“FILE...ŽŸ¯¹L'ext2fs–â›ha“ancš¸èhe“l'attributo“`undeletable'“(non“cancellabile)“(º+u“¹in“ºchattr¹).‘ñL'in˜tenzione“€è“c˜he“se“un“leŽ¡con–íÃquell'attributo“viene“cancellato,›ëin•¸èv“ece–íÃdi“essere“v•¸èeramen“te–íÃriutilizzato,˜viene“soltan¸èto“spGostato“in“unŽ¡pšGosto–ž"sicuro“p˜er“p˜oter“essere“cancellato“in“un“secondo“temp˜o.‘L‡Sfortunatamen¸ète“questa“caratteristica“non“€èŽ¡stata–Wjancora“implemenš¸ètata“nei“principali“k˜ernel;‘XŽanc˜he“se“in“passato“c'€è“stato“un“qualc˜he“in˜teresse“nella“suaŽ¡implemenš¸ètazione,–U a“quan˜to“ne“so“non“€è“dispšGonibile“p˜er“le“vš¸èersioni“recen˜ti“del“k˜ernel.Ž©ؼAlcuni–—5suggeriscono“di“rendere“ºrm“¹un“alias“di“shell“o“una“funzione“cš¸èhe“stia“pGer“ºrm‘?¬-i“¹(c˜he“c˜hiede“confermaŽ¡su–U Ãqualsiasi‘Yé¹le“cš¸èhe“cancellate).‘q€A˜ddirittura“la“Ãdistribuzione›“°R–ÿ}/e“d˜Hat‘U ºhttp://www.redhat.com/Ž¦¹lo–×mette“pšGer“default“a“tutti“gli“uten¸èti,‘²compreso“ro˜ot.‘WP•¸èersonalmen“te,‘²non–×riesco“a“sopp˜ortare“il“soft•¸èw“are‘×c“heŽ¡non–®funziona“da“solo,‘ŒÒquindi“non“faccio“cos€ì.‘÷*C'€è“ancš¸èhe“il“problema“c˜he,›ŒÒprima“o“pGoi,˜userete“la“moGdalit€à“aŽ¡utenš¸ète–¾singolo,‘lo“una“shell“div˜ersa“o“addirittura“una“macc˜hina“div˜ersa,‘ldo˜v˜e“la“funzione“ºrm“¹c˜he“a˜v˜ete“denitoŽ¡non–ŒEesiste.‘îSe“vi“aspGettate“cš¸èhe“vi“v˜enga“c˜hiesta“conferma,‘š€è“facile“dimen˜ticarsi“do˜v˜e“vi“tro˜v‘ÿqÐate“e“spGecicareŽ¡troppi–œ%le“al“comando“di“cancellazione.‘FUgualmenš¸ète,‘­æi“v‘ÿqÐari“script“e“i“programmi“c˜he“sostituiscono“ºrm“¹sono,Ž¡IMHO,–U molto“pGericolosi.Ž¦Una–l´soluzione“leggermenš¸ète“migliore“€è“cominciare“ad“usare“un“pacc˜hetto“c˜he“gestisca“la“cancellazione“riciclabileŽ¡fornendo–ëöun“comando“cš¸èhe“non“si“c˜hiami“ºrm¹.‘NrP˜er“a˜v˜ere“ulteriori“dettagli“su“questo“argomen˜to,‘þv˜edere“P˜eek,‘þetŽ¡al–ë(1993)“(vš¸èedere“la“sezione“15“(Bibliograa“e“ringraziamen˜ti)).‘]nQueste,‘$öpGer€ò“hanno“il“problema“c˜he“tendonoŽ¡ad–Bincoraggiare“l'utenš¸ète“a“non“fare“attenzione“quando“cancellano“dei“le,‘}ëin˜v˜ece“c˜he“starci“molto“atten˜ti,Ž¡come–U spGesso“€è“ric¸èhiesto“nei“sistemi“Unix.ŽŸ(]Á3Ž‘ÁChe–G\pšpœercenctuale“di“recup˜ero“mi“p˜osso“asp˜ettare?ŽŸ¿:¹DipšGende.‘;T‘ÿ*¸ra– i“problemi“c¸èhe“insorgono“nel“recup˜ero“dei“le“su“un“sistema“op˜erativš¸èo“di“alta“qualit€à,‘1m˜ul-Ž¡titasking–Ùhe“m•¸èulti-uten“te–Ùhcome“Linš¸èux“c'€è“quello“c˜he“non“si“sa“mai“quando“qualcuno“vuole“scriv˜ere“su“disco.Ž¡Quindi,›Röquando–Rlal“sistema“opGerativ¸èo“viene“detto“di“cancellare“un“le,˜assume“cš¸èhe“i“bloGcc˜hi“usati“da“quel“leŽ¡sono–àVdispšGonibili“p˜er“allo˜care“spazio“p˜er“un“altro“le“(€è“un“esempio“sp˜ecico“di“un“principio“generale“di“Lin¸èux:Ž¡il–þkš¸èernel“e“gli“strumen˜ti“relativi“assumono“c˜he“gli“uten˜ti“non“siano“idioti).‘loIn“generale,‘(Ypi€ù“viene“usata“laŽ¡maccš¸èhina,–U meno“€è“probabile“c˜he“riusciate“a“recupGerare“con“successo“i“v˜ostri“le.Ž¦Inoltre,‘ªBla–Šframmenš¸ètazione“del“disco“pu€ò“inuire“sulla“facilit€à“di“recupGero“dei“le.‘*OSe“la“partizione“c˜he“con˜tieneŽ¡i–U le“cancellati“€è“molto“frammenš¸ètata,“€è“p•Go“co–U probabile“c˜he“riusciate“a“leggere“un“le“in˜tero.ŽŽŽŒ‹v‘ÿ\|are–Õgli“inoQÂde“cancellati’6™s¹8ŽŽ ÕÁ ýV¯L'altra–2}cosa“di“cui“aš¸èvrete“bisogno“€è“un“programma“c˜he“pu€ò“leggere“i“dati“necessari“dal“mezzo“del“dispGositiv˜oŽ¤ ®della–f„partizione.‘¥¬P¸èer“iniziare,›jݺdd“¹adr€à“bGene,˜ma“pGer“leggere“diciamo,˜dal“600esimo“MB‘f€in“una“partizione“daŽ¡800–v¿MB,“ºdd“¹insiste“a“leggere“ma“ad“ignorare“i“primi“600“MB.“Questo“prende“un“tempGo“piuttosto“lungo.‘Ö\LaŽ¡mia–¿êsoluzione“pGer“questo“problema“€è“stata“scrivš¸èere“un“programma“c˜he“cercasse“nel“mezzo“della“partizione.Ž¡Si–U cš¸èhiama“ºfsgrab¹;“ne“pGotete“tro˜v‘ÿqÐare“il“sorgen˜te“sulŽ¤ؼÃmio–“°sito“web‘U ºhttp://pobox.com/~aaronc/tech/fsgrab-‘€1.2.tar.gzŽ¡¹e–U presto“arriv¸èer€à“suŽ¡ÃMetalab‘U ºhttp://metalab.unc.edu/pub/Linux/utils/file/Ž¡¹(e–Ñsui“suoi“mirror).‘E{Se“vš¸èolete“usare“questo“metoGdo,‘ëzil“resto“di“questo“mini-Ho˜wto“assume“c˜he“abbiate“ºfsgrab¹.Ž¡Se–~ßnessuno“dei“le“cš¸èhe“state“pro˜v‘ÿqÐando“a“recupšGerare“€è“pi€ù“lungo“di“12“blo˜ccš¸èhi“(do˜v˜e“un“bloGcco“di“solito“€è“unŽ© ®kilobš¸èyte),–U allora“non“a˜vrete“bisogno“di“ºfsgrab¹.Ž¡Se›%ƒdo•¸èv“ete˜usare˜ºfsgrab˜¹ma˜non˜v“olete˜scaricarlo˜e˜compilarlo,‘Y›€è˜piuttosto˜semplice˜tradurre˜una˜linea˜diŽ¦comando–U di“ºfsgrab“¹in“una“di“ºdd¹.‘q€Se“a•¸èv“eteŽ¤K‘Çfsgrab–¹N-c“óqLË ecit0900Ècount›I5Ç-s“Èskip˜deviceŽ¡¹allora–U il“comando“di“ºdd“¹corrispGondenš¸ète“(ma“tipicamen˜te“molto“pi€ù“len˜to)“€èŽ¡‘Çdd–¹Nbs=1k“if=Èdevice–I5Çcount=Ècount“Çskip=ÈskipŽ¡¹Vi–Ñdevš¸èo“a˜vvisare“c˜he,‘Hanc˜he“se“ºfsgrab“¹ha“funzionato“bšGenissimo“p˜er“me,‘Hnon“p˜osso“prendermi“alcuna“resp˜on-Ž¦sabilit€à–ÌüpšGer“il“suo“uso.‘ـȑÌÝstata“una“soluzione“v•¸èeramen“te‘Ìüv“elo˜ce–Ìüe“impro¸èvvisata“p˜er“fare“funzionare“le“cose.Ž¦Pš¸èer–®Éaltri“dettagli“sulla“mancanza“di“garanzia,‘Å3v˜edere“la“sezione“`Nessuna“garanzia'“nel“le“ºCOPYING‘®±¹inclusoŽ¦con–U il“programma“(la“GNU“General“Public“License).ŽŸ(±ŽÁ8Ž‘ÁT‘þ®(rocv‘ÿÆare–G\gli“inopœde“cancellatiŽŸ¿:¹Il–]prossimo“passo“€è“c¸èhiedere“al“lesystem“quali“inošGde“sono“stati“lib˜erati“recen•¸ètemen“te.‘#8€È‘Nun–]compito“c¸èhe“siŽ¦pu€ò–™ÿpšGortare“a“termine“con“ºdebugfs¹;‘Ø`a¸èvviatelo“con“il“nome“del“disp˜ositiv¸èo“in“cui“€è“immagazzinato“il“lesystem:Ž©]t‘Ç#–¹Ndebugfs“/dev/hda5Ž¡¹Se–U vš¸èolete“moGdicare“direttamen˜te“gli“inošGde,“aggiungete“l'opzione“º-w“¹p˜er“abilitare“la“scrittura“sul“lesystem:Ž¦‘Ç#–¹Ndebugfs“-w“/dev/hda5Ž¡¹Il–U comando“di“ºdebugfs“¹pšGer“tro¸èv‘ÿqÐare“gli“ino˜de“cancellati“€è“ºlsdel¹,“quindi,“digitate“il“comando“al“prompt:Ž¦‘Çdebugfs:‘ rœlsdelŽ¡¹DopšGo–Ämolti“lamen¸èti“e“stridore“dei“meccanismi“del“disco,‘ßÞun“lungo“elenco“viene“mandato“in“pip˜e“nel“v¸èostroŽ¤ ®pager–pŽpreferito“(il“v›ÿqÐalore“di“º$PAGER¹).“Ora“v¸èorrete“salv˜arne“una“copia“da“qualcš¸èhe“altra“parte.‘ÃËSe“a˜v˜ete“ºless¹,Ž¡pGotete–²Ïdigitare“º-o“¹seguito“dal“nome“di“un“le“di“output,‘Ê:altrimenš¸èti“do˜vrete“riuscire“a“mandare“l'output“daŽ¡qualcš¸èhe–U altra“parte.‘q€Pro˜v‘ÿqÐate“cos€ì:Ž¦‘Çdebugfs:‘ rœquitŽŸ Š=‘#–¹Necho“lsdel“|“debugfs“/dev/hda5“>“lsdel.outŽŽŽŒ‹ k Û_2 ý ~?Ÿ„€ÕÁGŽÂ9.‘ñ8Ottenere–Õi“dettagli“degli“inoQÂde’&jv¹9ŽŽ ÕÁ ýV¯Ora,›ɼbasando¸èvi–7solo“sull'ora“di“cancellazione,˜la“dimensione,˜il“tipšGo“e“i“p˜ermessi“e“l'o¸èwner“espressi“comeŽ¤ ®n•¸èumeri,‘ïZdo“vrete–Õériconoscere“quali“di“questi“inoGde“cancellati“sono“quelli“cš¸èhe“vi“serv˜ono.‘GCon“un“pGo'“di“fortuna,Ž¡pšGotrete–‡#riconoscerli“p˜ercš¸èh€é“sono“tutti“quelli“c˜he“a˜v˜ete“cancellato“circa“cinque“min˜uti“fa.‘ˆAltrimen˜ti,‘“£cercateŽ¡con–U attenzione“su“tutta“la“lista.ŽŸؼSuggerisco–âGc¸èhe,›‘se“pGossibile,˜stampiate“la“lista“degli“inoGde“cš¸èhe“v˜olete“recupGerare.‘öVi“render€à“la“vita“moltoŽ¡pi€ù‘U semplice.ŽŸ(ÀœÁ9Ž‘ÁOttenere–G\i“dettagli“degli“inopœdeŽŸ¿:ºdebugfs–·F¹ha“un“comando“ºstat“¹c¸èhe“stampa“i“dettagli“su“un“inošGde.‘—óDate“questo“comando“p˜er“ciascun“ino˜deŽ¡nella–U vš¸èostra“lista.‘q€A˜d“esempio,“se“siete“in˜teressati“all'inoGde“n˜umero“148003,“pro˜v‘ÿqÐate“questo:Ž©´å‘Çdebugfs:‘ rœstat‘¹N<148003>Ž¤ Š=‘Inode:–¹N148003›+êType:“regular‘å8Mode:‘ rœ0644˜Flags:“0x0˜Version:“1Ž¡‘User:–+ê503“Group:“100“Size:‘¹N6065Ž¡‘File–¹NACL:“0‘å8Directory“ACL:“0Ž¡‘Links:–¹N0‘+êBlockcount:“12Ž¡‘Fragment:‘ rœAddress:–¹N0›å8Number:“0˜Size:“0Ž¡‘ctime:–¹N0x31a9a574“--“Mon“May“27“13:52:04“1996Ž¡‘atime:–¹N0x31a21dd1“--“Tue“May“21“20:47:29“1996Ž¡‘mtime:–¹N0x313bf4d7“--“Tue“Mar‘ rœ5“08:01:27“1996Ž¡‘dtime:–¹N0x31a9a574“--“Mon“May“27“13:52:04“1996Ž¡‘BLOCKS:Ž¡‘594810–¹N594811“594814“594815“594816“594817Ž¡‘TOTAL:‘¹N6Ž¤ؼ¹Se›Ïido•¸èv“ete˜recupGerare˜moltissimi˜le,‘íûv“orrete˜rendere˜questo˜passaggio˜automatico.‘à[Assumendo˜c“he˜la˜listaŽŸ ®degli–U inošGde“da“recup˜erare“sia“nel“le“ºlsdel.out¹,“pro¸èv‘ÿqÐate“con“questo:Ž¦‘Ç#–¹Ncut“-c1-6“lsdel.out“|“grep“"[0-9]"“|“tr“-d“"“"“>“inodeŽ¡¹Questo›¦Ãn•¸èuo“v“o˜le,–»,ºinode¹,“con•¸ètiene˜il˜n“umero˜degli˜ino•Gde˜da˜recup“erare,‘»,uno˜p“er˜linea.‘fjLo˜salviamo˜p“erc¸èh€éŽŸ ®molto–U probabilmenš¸ète“torner€à“comoGdo“pi€ù“tardi.‘q€Date“semplicemen˜te:Ž¦‘Ç#–¹Nsed“'s/^.*$/stat“<\0>/'“inode“|“debugfs“/dev/hda5“>“statsŽ¡¹e–U ºstats“¹con¸èterr€à“l'output“di“tutti“i“comandi“ºstat¹.ŽŸ(ÀœÁ10Ž‘¬%Recupšpœerare–G\i“blo˜ccchi“di“datiŽŸ¿:¹Questa–_Ãparte“pu€ò“essere“molto“semplice“o“molto“p•Go“co,‘bla–_Ãseconda“cš¸èhe“il“le“c˜he“state“cercando“di“recupGerareŽ¤ ®sia–U pi€ù“lungo“di“12“bloGcc¸èhi.ŽŸ#ÃÅ10.1Ž‘%}¨File‘¸cortiŽŸMª¹Se–|µil“le“non“era“pi€ù“lungo“di“12“bloGccš¸èhi,‘†šallora“i“n˜umeri“dei“bloGcc˜hi“di“tutti“i“suoi“dati“sono“immagazzinatiŽ¡nell'ino•Gde:‘ï li›“æp“otete˜leggere˜direttamen¸ète˜dall'output˜di˜ºstat˜¹p“er˜l'ino“de.‘-ÑInoltre,‘£—ºdebugfs˜¹ha˜un˜comandoŽ¡cš¸èhe–U fa“questo“compito“automaticamen˜te.‘q€P˜er“con˜tin˜uare“con“l'esempio“di“prima,“ripGetuto“qui:ŽŽŽŒ‹ wÓ Û_2 ý ~?Ÿ„€ÕÁGŽÂ10.‘ñ8RecupšQÂerare–Õi“blo˜cc®>hi“di“dati’'ò¹10ŽŽ ÕÁ ýV¯‘Çdebugfs:‘ rœstat‘¹N<148003>Ž¤ Š=‘Inode:–¹N148003›+êType:“regular‘å8Mode:‘ rœ0644˜Flags:“0x0˜Version:“1Ž¡‘User:–+ê503“Group:“100“Size:‘¹N6065Ž¡‘File–¹NACL:“0‘å8Directory“ACL:“0Ž¡‘Links:–¹N0‘+êBlockcount:“12Ž¡‘Fragment:‘ rœAddress:–¹N0›å8Number:“0˜Size:“0Ž¡‘ctime:–¹N0x31a9a574“--“Mon“May“27“13:52:04“1996Ž¡‘atime:–¹N0x31a21dd1“--“Tue“May“21“20:47:29“1996Ž¡‘mtime:–¹N0x313bf4d7“--“Tue“Mar‘ rœ5“08:01:27“1996Ž¡‘dtime:–¹N0x31a9a574“--“Mon“May“27“13:52:04“1996Ž¡‘BLOCKS:Ž¡‘594810–¹N594811“594814“594815“594816“594817Ž¡‘TOTAL:‘¹N6Ž¤Ù¹Questo–Dle“ha“sei“bloGccš¸èhi.‘UáDato“c˜he“questo“corrispšGonde“a“meno“del“limite“di“12,‘Öusiamo“ºdebugfs“¹p˜er“scriv¸èereŽŸ ®il–U le“in“una“n•¸èuo“v‘ÿqÐa–U pGosizione,“come“º/mnt/recovered.000¹:Ž©µ¸‘Çdebugfs:‘ rœdump–¹N<148003>“/mnt/recovered.000Ž¡¹Naturalmenš¸ète,–U pGotete“fare“lo“stesso“con“ºfsgrab¹;“qui“sotto“presen˜to“un“esempio“del“suo“uso:Ž¦‘Ç#–¹Nfsgrab“-c“2“-s“594810“/dev/hda5“>“/mnt/recovered.000ŽŸ Š=‘#–¹Nfsgrab“-c“4“-s“594814“/dev/hda5“>>“/mnt/recovered.000Ž¡¹Sia–žðcon“ºdebugfs“¹cš¸èhe“con“ºfsgrab¹,‘±dci“saranno“dei“caratteri“in˜utili“alla“ne“di“º/mnt/recovered.000¹,‘±dma“nonŽ¤ ®€è–U>molto“impGortanš¸ète.‘qÛSe“v˜olete“sbarazzarv˜ene,‘UFil“metošGdo“pi€ù“semplice“€è“prendere“il“camp˜o“ºSize“¹dall'ino˜de,‘UFeŽ¡metterlo–U nell'opzione“ºbs“¹della“linea“di“comando“di“ºdd¹:Ž¦‘Ç#–¹Ndd“count=1“if=/mnt/recovered.000“of=/mnt/resized.000“bs=6065Ž©Ù¹Naturalmenš¸ète,‘?€è–9€pGossibile“c˜he“uno“o“pi€ù“dei“bloGcc˜hi“c˜he“compGongono“il“v˜ostro“le“siano“stati“so˜vrascritti.‘hKSeŽ¡€è–(Æcos€ì,‘1¤siete“sfortunati:‘[Squel“blošGcco“€è“p˜erso“p˜er“sempre“(ma“p˜ensate“se“a•¸èv“este›(Æsmon“tato˜il˜lesystem˜prima!).ŽŸ"ñÔÅ10.2Ž‘%}¨File–¸pi€ù“lunghiŽŸMª¹I‘>ðproblemi–?,compaiono“quando“il“le“€è“pi€ù“lungo“di“12“bloGccš¸èhi“di“dati.‘/¥Qui“con˜viene“sapšGere“un“p˜o'“comeŽ¡sono–róstrutturati“dei“lesystem“UNIX.“I‘rëdati“del“le“sono“immagazzinati“in“unit€à“cš¸èhiamate“`bloGcc˜hi'.‘ÊøQuestiŽ¡blo•Gcc¸èhi›`°p“ossono˜essere˜n•¸èumerati˜sequenzialmen“te.‘”0Un˜le˜ha˜anc“he˜un˜`inoGde',‘c”c“he˜€è˜il˜pGosto˜in˜cui˜v“engonoŽ¡immagazzinate–ÔÀinformazioni“come“il“proprietario,‘4¨i“pšGermessi“ed“il“tip˜o.‘ðaCome“i“blo˜cc¸èhi,‘4¨gli“ino˜de“sonoŽ¡n•¸èumerati›‰Ãsequenzialmen“te,‘–ëanc“he˜se˜con˜una˜n“umerazione˜separata.‘hUna˜v“oGce˜di˜una˜directory˜consiste˜nelŽ¡nome–U del“le“e“nel“n¸èumero“di“un“inoGde.ŽŸؼMa–±Jcon“questo“stato“di“cose“€è“ancora“impšGossibile“p˜er“il“kš¸èernel“tro˜v‘ÿqÐare“i“dati“corrispGonden˜ti“ad“una“v˜oGce“diŽ¡una–U directory‘ÿ*¸,“quindi“nell'inoGde“vš¸èengono“anc˜he“registrati“i“n˜umeri“dei“bloGcc˜hi“di“dati“del“le,“cos€ì:Ž¦‘¸ŽŽŽ‘¹I‘¡hnš¸èumeri–¡•di“bloGcc˜hi“dei“primi“12“bloGcc˜hi“v˜engono“immagazzinati“direttamen˜te“nell'inoGde;‘Ýnquesti“v˜engonoŽ¡‘a–U vš¸èolte“c˜hiamati“Ãblo–ÿ}/c“chi‘“°dir“etti‘ɹ.Ž©H‘¸ŽŽŽ‘¹L'inoGde–¾conš¸ètiene“il“n˜umero“di“blošGcco“di“un“Ãblo–ÿ}/c“c“o‘ôAindir“etto‘¡Ž¹.‘¬cUn–¾blo˜cco“indiretto“conš¸ètiene“i“n˜umeri“diŽ¡‘blošGcco–U di“altri“256“blo˜cc¸èhi“di“dati.Ž¦‘¸ŽŽŽ‘¹L'inoGde–Åæconš¸ètiene“il“n˜umero“di“blošGcco“di“un“Ãblo–ÿ}/c“c“o–æõdoppiamente“indir‘ÿ}/etto‘¡Ž¹.‘ÃÒUn–Åæblo˜cco“doppiamen¸èteŽ¡‘indiretto–U conš¸ètiene“i“n˜umeri“di“blošGcco“di“altri“256“blo˜ccš¸èhi“doppiamen˜te“indiretti.ŽŽŽŒ‹ ƒ8 Û_2 ý ~?Ÿ„€ÕÁGŽÂ10.‘ñ8RecupšQÂerare–Õi“blo˜cc®>hi“di“dati’'ò¹11ŽŽ ÕÁ ýV¯‘¸ŽŽŽ‘¹L'inoGde–¦xconš¸ètiene“il“n˜umero“di“blošGcco“di“un“Ãblo–ÿ}/c“c“o–ótriplamente“indir‘ÿ}/etto‘¡Ž¹.‘7HUn–¦xblo˜cco“triplamen¸ète“indirettoŽ¤ ®‘conš¸ètiene–U i“n˜umeri“di“blošGcco“di“altri“256“blo˜ccš¸èhi“triplamen˜te“indiretti.ŽŸš’Leggetelo–U ancora:‘q€lo“so“cš¸èhe“€è“complesso,“ma“€è“anc˜he“impGortan˜te.Ž©ؼOra,‘él'implemenš¸ètazione–˜Ldel“k˜ernel“pGer“tutte“le“v˜ersioni“no“alla“2.0.36“compresa“sfortunatamen˜te“azzeraŽ¡tutti–cui“bloGccš¸èhi“indiretti“(e“quelli“doppiamen˜te“indiretti“e“cos€ì“via)“quando“cancella“un“le;‘jŸquindi“se“il“le“inŽ¡questione–‰rera“pi€ù“lungo“di“12“bloGccš¸èhi,‘–‡non“a˜v˜ete“alcuna“garanzia“di“riuscire“a“tro˜v‘ÿqÐare“nemmeno“i“n˜umeri“diŽ¡tutti–U i“blošGcc¸èhi“comp˜onen¸èti“il“le,“p˜ensate“p˜oi“i“loro“con•¸èten“uti.Ž¦L'unico–À–metoGdo“cš¸èhe“sono“riuscito“a“tro˜v‘ÿqÐare“nora“€è“di“assumere“c˜he“il“le“non“era“frammen˜tato:‘Hlse“lo“era,Ž¡siete–Œnei“guai.‘{Assumendo“cš¸èhe“il“le“non“fosse“frammen˜tato,‘™Þci“sono“div˜ersi“sc˜hemi“pšGer“i“blo˜cc¸èhi“dei“dati,‘™ÞaŽ¡seconda–U di“quanš¸èti“bloGcc˜hi“dati“il“le“usa˜v‘ÿqÐa:ŽŸš’Âda–Õ0“a“12ŽŽŽ¤¡¥‘¹I–U n¸èumeri“di“blošGcco“sono“registrati“nell'ino˜de,“come“sopra“descritto.Ž©•6Âda–Õ13“a“268ŽŽŽ¡‘¹DopšGo–U i“blo˜ccš¸èhi“diretti,“con˜tatene“uno“pšGer“il“blo˜cco“indiretto,“e“p˜oi“ci“sono“256“blo˜cc¸èhi“di“dati.Ž¦Âda–Õ269“a“65804ŽŽŽ¡‘¹Come–*¯prima,›3,ci“sono“12“bloGcc¸èhi“diretti,˜uno“indiretto“(in¸èutile),˜e“256“bloGcc¸èhi;‘8Õquesti“sono“seguiti“da“unŽ¤ ®‘bloGcco–´õdoppiamenš¸ète“indiretto“(in˜utile),‘Ìëe“256“ripšGetizioni“di“un“blo˜cco“indiretto“(in¸èutile)“e“256“blo˜cc¸èhiŽ¡‘di‘U dati.Ž¦Â65805–Õo“pi€ùŽŽŽŸ¡¥‘¹Lo–óôscš¸èhema“dei“primi“65804“bloGcc˜hi“sono“come“nel“preceden˜te“esempio.‘QP˜oi“segue“un“bloGcco“triplamen˜teŽ¡‘indiretto–N(inš¸èutile)“e“256“ripGetizioni“di“una“`sequenza“doppiamen˜te“indiretta'.‘s Ogni“sequenza“diretta-Ž¡‘menš¸ète–qindiretta“consiste“di“un“bloGcco“doppiamen˜te“indiretto“(in˜utile),‘xseguito“da“256“ripGetizioni“di“unŽ¡‘blošGcco–U indiretto“(in¸èutile)“e“256“blo˜cc¸èhi“di“dati.ŽŸš’Naturalmen•¸ète,‘mKanc“he–huse“questi“nš¸èumeri“di“bloGcc˜hi“di“dati“assun˜ti“sono“corretti,‘mKnon“c'€è“garanzia“c˜he“i“dati“inŽ¡essi›ƒ con•¸èten“uti˜siano˜in“tatti.‘û>Oltre˜a˜ci€ò,–Ž„pi€ù˜lungo˜era˜il˜le,“minore˜€è˜la˜pGossibilit€à˜c¸èhe˜sia˜stato˜scritto˜nelŽ¡lesystem–U senza“una“frammen¸ètazione“apprezzabile“(eccetto“in“circostanze“spGeciali).Ž©ؼDa–lnotare“cš¸èhe“ho“sempre“assun˜to“c˜he“la“dimensione“dei“bloGcc˜hi“sia“di“1024“b˜yte,‘qÉdato“c˜he“€è“questo“il“v‘ÿqÐaloreŽ¡standard.‘™‹Se›bya•¸èv“ete˜bloGcc“hi˜pi€ù˜grandi,‘¥Ïalcune˜delle˜cifre˜ripGortate˜qui˜sopra˜sono˜errate.‘™‹In˜particolare,Ž¡dato–ÕYcš¸èhe“ciascun“n˜umero“di“bloGcco“€è“lungo“4“b˜yte,‘5gdim˜bloGcc˜hi/4“€è“il“n˜umero“di“bloGcc˜hi“c˜he“pu€ò“essereŽ¡immagazzinato–øãin“ciascun“bloGcco“indiretto.‘\ÈQuindi,‘!Óogni“vš¸èolta“c˜he“il“n˜umero“256“appare“nella“discussioneŽ¡qui–U sopra,“sostituitelo“con“dim•¸èblošGcc“hi/4.‘q€Do“vrete–U mo˜dicare“ancš¸èhe“i“limiti“sul“`n˜umero“di“bloGcc˜hi“ric˜hiesto'.Ž¦Esaminiamo–U un“esempio“di“recupGero“di“un“le“lungo.ŽŸv»‘Çdebugfs:‘ rœstat‘¹N<1387>Ž¤ Š=‘Inode:–¹N148004›+êType:“regular‘å8Mode:‘ rœ0644˜Flags:“0x0˜Version:“1Ž¡‘User:–+ê503“Group:“100“Size:‘¹N1851347Ž¡‘File–¹NACL:“0‘å8Directory“ACL:“0Ž¡‘Links:–¹N0‘+êBlockcount:“3616Ž¡‘Fragment:‘ rœAddress:–¹N0›å8Number:“0˜Size:“0Ž¡‘ctime:–¹N0x31a9a574“--“Mon“May“27“13:52:04“1996Ž¡‘atime:–¹N0x31a21dd1“--“Tue“May“21“20:47:29“1996Ž¡‘mtime:–¹N0x313bf4d7“--“Tue“Mar‘ rœ5“08:01:27“1996Ž¡‘dtime:–¹N0x31a9a574“--“Mon“May“27“13:52:04“1996Ž¡‘BLOCKS:ŽŽŽŒ‹ ‘^ Û_2 ý ~?Ÿ„€ÕÁGŽÂ11.‘ñ8MošQÂdicare–Õgli“ino˜de“direttamen®>te’ Á†¹12ŽŽ ÕÁ ýV¯‘Ç8314–¹N8315“8316“8317“8318“8319“8320“8321“8322“8323“8324“8325“8326“8583ŽŸ Š=‘TOTAL:‘¹N14Ž©ؼ¹Semš¸èbra–[oesserci“una“pGossibilit€à“ragionev˜ole“c˜he“questo“le“non“sia“frammen˜tato:‘~di“sicuro,‘]i“primi“12“bloGcc˜hiŽ¤ ®elencati–é×nell'inošGde“(c¸èhe“sono“tutti“blo˜ccš¸èhi“di“dati)“sono“con˜tigui;‘42quindi“pšGossiamo“cominciare“a“recup˜erareŽ¡quelli:ŽŸ´å‘Ç#–¹Nfsgrab“-c“12“-s“8314“/dev/hda5“>“/mnt/recovered.001Ž¦¹L'ultimo–ùblošGcco“elencato“nell'ino˜de“€è“8583.‘RÍNotate“c¸èhe“stiamo“ancora“b˜ene“p˜er“quanš¸èto“riguarda“la“con˜tiguit€àŽ¡del–Jðle:‘] l'ultimo“bloGcco“di“dati“cš¸èhe“abbiamo“scritto“era“l'8582,‘ˆdc˜he“€è“8327“+“255.‘RïQuesto“bloGcco“8583“€èŽ¡un–DNblošGcco“doppiamen¸ète“indiretto,‘€e“quindi“p˜ossiamo“ignorarlo.‘? €È‘Dseguito“da“256“rip˜etizioni“di“un“blo˜ccoŽ¡indiretto–П(c¸èhe“pšGossiamo“ignorare)“seguito“da“256“blo˜ccš¸èhi“di“dati;‘_quindi,‘ïfacendo“un“rapido“con˜to,‘ïdiamo“iŽ¡seguenš¸èti–§ócomandi.‘iøNotate“c˜he“saltiamo“il“blošGcco“indiretto“8583,‘¼§e“il“blo˜cco“indiretto“8584“immediatamen¸èteŽ¡(spšGeriamo)–U successiv¸èo,“e“cominciamo“a“cercare“i“dati“dal“blo˜cco“8585.ŽŸ´å‘Ç#–¹Nfsgrab“-c“256“-s“8585“/dev/hda5“>>“/mnt/recovered.001Ž¤ Š=‘#–¹Nfsgrab“-c“256“-s“8842“/dev/hda5“>>“/mnt/recovered.001Ž¡‘#–¹Nfsgrab“-c“256“-s“9099“/dev/hda5“>>“/mnt/recovered.001Ž¡‘#–¹Nfsgrab“-c“256“-s“9356“/dev/hda5“>>“/mnt/recovered.001Ž¡‘#–¹Nfsgrab“-c“256“-s“9613“/dev/hda5“>>“/mnt/recovered.001Ž¡‘#–¹Nfsgrab“-c“256“-s“9870“/dev/hda5“>>“/mnt/recovered.001Ž¦¹F‘ÿ*¸acendo–úæle“somme,‘$Xvš¸èediamo“c˜he“nora“abbiamo“scritto“12“+“(7“*“256)“bloGcc˜hi,‘$Xc˜he“fa“1804.‘bÓI‘ú¼risultati“diŽ¤ ®`stat'–>“/mnt/recovered.001Ž¦¹Ora,–U con“un“pšGo'“di“fortuna“a¸èvremo“recup˜erato“l'in¸ètero“le.ŽŸ(ÀœÁ11Ž‘¬%Mošpœdicare–G\gli“ino˜de“direttamencteŽŸ¿:¹Questo–†ÏmetošGdo“€è,–“;sup˜ercialmenš¸ète,“molto–†Ïpi€ù“semplice;‘Ÿ¦com˜unque,›“;come“gi€à“detto,˜non“pu€ò“gestire“le“pi€ùŽ¡lunghi–U di“12“bloGcc¸èhi.ŽŸؼPš¸èer–÷‰ogni“inoGde“c˜he“v˜olete“recupGerare,‘ #do˜v˜ete“impGostare“lo“usage“coun˜t“a“uno,‘ #e“il“deletion“time“a“zero:‘¶QsiŽ¡fa–~šcon“il“comando“ºmi“¹(mošGdify“ino˜de)“di“ºdebugfs¹.‘íïUn“esempio“di“output,‘ˆùmo˜dicando“l'ino˜de“148003“di“cuiŽ¡sopra:ŽŸ´å‘Çdebugfs:‘ rœmi‘¹N<148003>Ž¤ Š=’˜‹te’ Á†¹13ŽŽ ÕÁ ýV¯‘|3hÇLink–¹Ncount‘å8[0]“1Ž¤ Š=‘wzBlock‘¹Ncount‘å8[12]Ž¡‘|3hFile‘¹Nflags‘å8[0x0]Ž¡’€ì¶Reserved1‘å8[0]Ž¡’…¦File‘¹Nacl‘å8[0]Ž¡‘n~Directory‘¹Nacl‘å8[0]Ž¡‘_Û”Fragment‘¹Naddress‘å8[0]Ž¡‘d”âFragment‘¹Nnumber‘å8[0]Ž¡‘n~Fragment‘¹Nsize‘å8[0]Ž¡‘d”âDirect–¹NBlock“#0‘å8[594810]Ž¡‘d”âDirect–¹NBlock“#1‘å8[594811]Ž¡‘d”âDirect–¹NBlock“#2‘å8[594814]Ž¡‘d”âDirect–¹NBlock“#3‘å8[594815]Ž¡‘d”âDirect–¹NBlock“#4‘å8[594816]Ž¡‘d”âDirect–¹NBlock“#5‘å8[594817]Ž¡‘d”âDirect–¹NBlock“#6‘å8[0]Ž¡‘d”âDirect–¹NBlock“#7‘å8[0]Ž¡‘d”âDirect–¹NBlock“#8‘å8[0]Ž¡‘d”âDirect–¹NBlock“#9‘å8[0]Ž¡‘_Û”Direct–¹NBlock“#10‘å8[0]Ž¡‘_Û”Direct–¹NBlock“#11‘å8[0]Ž¡‘iN0Indirect‘¹NBlock‘å8[0]Ž¡‘H=Double–¹NIndirect“Block‘å8[0]Ž¡‘H=Triple–¹NIndirect“Block‘å8[0]ŽŸ€0¹Cio•G€è›—Zimp“osto˜il˜deletion˜time˜a˜0˜e˜il˜link˜coun•¸èt˜a˜1˜e˜premete˜semplicemen“te˜in“vio˜pGer˜ciascuno˜degli˜altriŽ¤ ®campi.‘%D€È‘;{garanš¸ètito,‘u]€è–;·un“pGo'“noioso“se“a˜v˜ete“molti“le“da“recupšGerare,‘u]ma“ci“p˜otete“riuscire...‘%Daltrimen¸ètiŽ¡pšGotete–U usare“un“`sistema“op˜erativ¸èo'“graco“con“un“simpatico“`Cestino'.Ž©ؼT‘ÿ*¸ra–Äl'altro:‘Ogl'output“di“ºmi“¹si“riferisce“ad“un“campšGo“`Creation“time'“nell'ino˜de.›¾[€È‘Ã÷una“bugia!˜O‘Ã÷com¸èunque,Ž¡trae–:in“inganno.›hzIl“fatto“€è“c¸èhe“su“un“sistema“UNIX‘:non“si“pu€ò“dire“quando“€è“stato“creato“un“le.˜Il“mem¸èbroŽ¡ºst_ctime–[¹di“una“ºstruct‘?¬stat“¹si“riferisce“al“`tempšGo“di“mo˜dica“dell'ino˜de',‘\cio˜€è“il“momen¸èto“in“cui“sia“statoŽ¡mošGdicato–U un“dettaglio“dell'ino˜de.‘q€Qui“nisce“la“lezione“di“oggi.Ž¦Notate–¦“cš¸èhe“le“v˜ersioni“di“ºdebugfs“¹pi€ù“recen˜ti“di“quella“c˜he“sto“usando“probabilmen˜te“non“includono“alcuniŽ¡dei–U campi“cš¸èhe“ho“elencato“sopra“(in“particolare,“ºReserved1“¹e“(alcuni)“campi“di“fragmen˜t).Ž¦Una–U v¸èolta“mošGdicati“gli“ino˜de,“p˜otete“uscire“da“ºdebugfs“¹e“dire:ŽŸ\Y‘Ç#–¹Ne2fsck“-f“/dev/hda5ŽŸ€0¹L'idea–¢Q€è“c¸èhe“ciascuno“dei“le“cancellati“€è“stato“recupGerato,‘õma“nessuno“di“essi“compare“in“un“elenco“diŽ¡directory‘ÿ*¸.‘aõIl–&€programma“ºe2fsck“¹pu€ò“accorgersene,‘/Óed“aggiungere“una“v¸èošGce“di“directory“p˜er“ciascun“le“nellaŽ¡directory–bCº/lost+found“¹del“lesystem“(quindi“se“la“partizione“€è“normalmenš¸ète“mon˜tata“su“º/usr¹,‘¥‹i“le“oraŽ¡saranno–XÍin“º/usr/lost+found“¹quando“la“rimonš¸èterete).‘|ˆT‘ÿ*¸utto“quello“c˜he“rimane“da“fare“€è“scoprire“il“nome“diŽ¡ciascun–U le“dai“suoi“coun•¸èten“uti,–U e“rimetterlo“al“suo“pšGosto“corretto“nell'alb˜ero“delle“directory‘ÿ*¸.Ž¦Quando–W¶usate“ºe2fsck“¹aš¸èvrete“un“output“molto“in˜teressan˜te,‘˜\ed“alcune“domande“su“quale“danno“riparare.Ž¡RispšGondete–¾ `s€ì'“a“tutto“quello“c¸èhe“si“riferisce“alle“`summary“information'“o“agli“ino˜de“cš¸èhe“a˜v˜ete“moGdicato.Ž¡T‘ÿ*¸utto–Ÿ§il“resto“viene“lasciato“a“v•¸èoi,‘²Hanc“he–Ÿ§se“di“solito“€è“una“buona“idea“rispGondere“aermativ‘ÿqÐamen¸ète“a“tutteŽ¡le–U domande.‘q€Quando“ºe2fsck“¹ha“nito“pGotete“rimon¸ètare“il“lesystem.Ž¦In–1realt€à“c'€è“un'alternativ‘ÿqÐa“a“fare“lasciare“i“le“in“º/lost+found“¹ad“ºe2fsck¹:‘_¯pšGotete“usare“ºdebugfs“¹p˜er“creareŽ¡un–U link“all'inošGde“nel“lesystem.‘q€Usate“il“comando“ºlink“¹di“ºdebugfs“¹dop˜o“a•¸èv“er–U mo˜dicato“l'ino˜de:ŽŸ\Y‘Çdebugfs:‘ rœlink–¹N<148003>“pippo.txtŽŽŽŒ‹­Ü Û_2 ý ~?Ÿ„€ÕÁGŽÂ12.‘ñ8Div•®>en“ter€à–Õpi€ù“facile“in“futuro?’‹$¹14ŽŽ ÕÁ ýV¯Questo–À-crea“un“le“ºpippo.txt“¹in“quella“cš¸èhe“ºdebugfs“¹crede“sia“la“directory“corren˜te:‘'ºpippo.txt“¹sar€à“il“v˜ostroŽ¤ ®le.‘kADoš¸èvrete–Bbancora“usare“ºe2fsck“¹pGer“aggiustare“le“informazioni“di“indice“e“i“con˜teggi“dei“bloGcc˜hi“e“cos€ì“via.Ž©(ÀœÁ12Ž‘¬%Div•cen“ter€à–G\pi€ù“facile“in“futuro?ŽŸ¿:¹S€ì.›J´In–à»eetti,‘øcredo“c¸èhe“sia“gi€à“cos€ì.˜Menš¸ètre“sto“scriv˜endo,‘øi“k˜ernel“stabili“(nella“serie“2.0.x)“azzerano“i“bloGcc˜hiŽ¡indiretti,›;bcosa–4óc¸èhe“non“accade“a“quelli“di“sviluppGo“2.1.x,˜n€é“ai“2.2.x.‘fÆIl“k¸èernel“2.2.1“€è“stato“rilasciato“da“p•Go“coŽ¡(siamo–ððnel“F‘ÿ*¸ebbraio“1999),‘äed“i“rivš¸èenditori“di“Lin˜ux“probabilmen˜te“inizieranno“a“proGdurre“distribuzioni“diŽ¡Lin•¸èux›jc“he˜con“tengano˜i˜k“ernel˜2.2.x˜tra˜un˜mese˜o˜due.‘±ÐUna˜v“olta˜supGerata˜questa˜limitazione˜nel˜k“ernel˜diŽ¡prošGduzione,‘W¹molte–W4delle“mie“obiezioni“alla“tecnica“della“mo˜dica“man¸èuale“degli“ino˜de“spariranno;‘X>allo“stessoŽ¡tempšGo–U sar€à“anc¸èhe“p˜ossibile“usare“il“comando“ºdump“¹nel“ºdebugfs“¹sui“le“lunghi.Ž¦Á13Ž‘¬%Ci–G\sono“strumencti“pšpœer“automatizzare“questo“pro˜cesso?ŽŸ¿:¹In–JÈrealt€à“esistono.‘RySfortunatamenš¸ète“credo“c˜he“sorano“dello“stesso“problema“della“tecnica“della“moGdicaŽ¡man¸èuale–Å[degli“inošGde:‘Qõi“blo˜cc¸èhi“indiretti“non“p˜ossono“essere“recup˜erati.‘Â0Comš¸èunque,‘áidata“la“probabilit€à“c˜heŽ¡questo–U non“sar€à“a“brevš¸èe“un“problema,“con˜viene“dare“un'oGcc˜hiata“a“questi“programmi“gi€à“adesso.Ž©ؼIo–ö…ho“scritto“un“programma“cš¸èhe“si“c˜hiama“ºe2recover¹,‘ßessenzialmen˜te“un“wrappGer“P˜erl“su“ºfsgrab¹.‘U°F‘ÿ*¸a“unŽ¡ragionev¸èole–Jwsforzo“pšGer“gestire“i“blo˜ccš¸èhi“indiretti“azzerati,‘L™e“sem˜bra“funzionare“sucien˜temen˜te“bGene“nc˜h€é“ilŽ¡lesystem–Wînon“€è“frammenš¸ètato.‘yéImpGosta“anc˜he“correttamen˜te“i“pšGermessi“(e“quando“p˜ossibile“l'o¸èwner)“dei“leŽ¡recupGerati,–U e“si“assicura“c¸èhe“essi“abbiano“la“lunghezza“corretta.Ž¦Originariamenš¸ète–Üho“scritto“ºe2recover“¹pGer“il“prossimo“aggiornamen˜to“globale“di“questo“ho˜wto;‘”sfortunata-Ž¡menš¸ète–ci€ò“signica“c˜he“molta“della“doGcumen˜tazione“utile“pšGer“ºe2recover“¹uscir€à“con“quel“do˜cumen•¸èto.‘*ÒP“otrebb˜eŽ¡essere–;pšGer€ò“utile“gi€à“da“adesso,‘t‚quindi“€è“disp˜onibile“sul“Ãmio–g3sito“web‘;ºhttp://pobox.com/~aaronc/tech/Ž¡e2-‘€undel/–U ¹e“presto“su“Metalab.Ž¦Scott–C›D.“Heaš¸èvner“€è“l'autore“di“ºlde¹,‘Gil“Lin˜ux“Disk“Editor.‘k©Pu€ò“essere“usato“sia“come“editor“binario“di“disc˜hi,Ž¡sia–Òpcome“l'equiv‘ÿqÐalenš¸ète“di“ºdebugfs“¹pGer“i“lesystem“ext2“e“minix,‘ñÄed“anc˜he“pGer“gli“xia“(anc˜he“se“il“suppGortoŽ¡xia–(Gnon“€è“pi€ù“dispGonibile“nei“kš¸èernel“2.1.x“e“2.2.x).‘êõHa“alcune“caratteristic˜he“pšGer“aiutare“nel“recup˜ero“deiŽ¡le–N|dalla“cancellazione,‘OÐsia“pšGer“cercare“un“le“nell'elenco“dei“blo˜cc¸èhi“sia“p˜er“fare“delle“ricercš¸èhe“nel“con˜ten˜utoŽ¡del–a¶disco.‘—BHa“ancš¸èhe“della“buona“doGcumen˜tazione“sui“concetti“base“dei“lesystem,‘dÜoltre“ad“un“doGcumen˜to“suŽ¡come–U usarlo“pšGer“recup˜erare“i“le.‘q€La“v¸èersione“2.4“di“ºlde“¹€è“disp˜onibile“suŽ¦ÃMetalab‘U ºhttp://metalab.unc.edu/pub/Linux/system/filesystems/lde-‘€2.4.tar.gzŽ¦¹e–U sui“suoi“mirror,“o“sulŽ¦Ãsito–“°web“del‘‚Ðl'autor‘ÿ}/e–U ºhttp://www.geocities.com/CapeCanaveral/Lab/7731/lde.html“¹.Ž¦Un'altra–‘BpGossibilit€à“€è“il“GNU‘‘2Midnighš¸èt“Commander,‘ Jºmc¹.‘%åSi“tratta“di“uno“strumen˜to“di“gestione“di“le“full-Ž¡screen,‘Ýbasato–¾ýpGer“quanš¸èto“ne“so“su“un“certo“programma“MS-DOS‘¾×com˜unemen˜te“noto“come“`NC'.“ºmc“¹suppGortaŽ¡il–álmouse“sulla“console“di“Linš¸èux“e“sugli“xterm,‘øe“fornisce“un“lesystem“virtuale“c˜he“pGermette“trucc˜hi“come“fareŽ¡ºcd–ˆ¯¹den¸ètro“un“le“tar.‘ .T‘ÿ*¸ra“i“suoi“lesystem“virtuali“ce“n'€è“uno“pšGer“il“recup˜ero“di“le“su“ext2.‘ .Sem¸èbra“moltoŽ¡comoGdo,–U ancš¸èhe“se“ammetto“c˜he“non“l'ho“mai“usato“pGersonalmen˜te““preferisco“i“v˜ecc˜hi“comandi“di“shell.Ž¦Pš¸èer–DÄusare“la“sua“caratteristica“di“recupGero“dei“le,‘­si“dev˜e“congurare“il“programma“con“l'opzioneŽ¡ºwith-ext2undel¹;‘Š>a•¸èvrete›#4anc“he˜bisogno˜delle˜librerie˜di˜sviluppGo˜e˜dei˜le˜include˜presen“ti˜nel˜pacc“hettoŽ¡ºe2fsprog¹.‘q€La–U v¸èersione“fornita“nellaŽ¦ÃDebian‘ç>GNU/Linux–¯òºhttp://www.debian.org/“¹€è“gi€à“congurata“cos€ì;‘Ý[la“stessa“cosa“pu€ò“essere“pGer“le“altreŽ¡distribuzioni.‘ø–Una–‚'v¸èolta“compilato“il“programma,›ÍipGotete“dire“di“fare“ºcd‘?¬undel:¹dev/hda5/,˜ed“a•¸èv“ere‘‚'unŽŽŽŒ‹»€ Û_2 ý ~?Ÿ„€ÕÁGŽÂ14.‘ñ8Colophon’„8'¹15ŽŽ ÕÁ ýV¯`elenco–ßídi“directory'“dei“le“cancellati.‘èCome“nella“maggior“parte“degli“strumen¸èti“di“recupGero“dei“le,‘¡nonŽ© ®gestisce–U bšGene“i“blo˜ccš¸èhi“indiretti“azzerati,“e“tipicamen˜te“recupGera“solo“i“primi“12k“dei“le“lunghi.Ž¤ؼT‘ÿ*¸roš¸èv‘ÿqÐate–U l'ultima“v˜ersione“sulŽ¡Ãsito–“°fto“di“Midnight“Commander–U ºftp://ftp.nuclecu.unam.mx/Midnight/devel/“¹.Ž¡L'ultima–¶-vš¸èersione“non“di“sviluppGo“€è“probabilmen˜te“la“4.0;‘æ´come“con“il“k˜ernel“stesso,‘Îqle“v˜ersioni“di“sviluppGoŽ¦Ãnon‘u¹sono–U raccomandate“ai“non“sviluppatori.‘q€La“lista“degli“oltre“70“siti“da“cui“scaricarlo“€è“dispGonibile“sulŽ¡Ãsito–“°web“di“Midnight“Commander“4–U ºhttp://mc.blackdown.org/mc4/“¹,“o“pro¸èv‘ÿqÐate“ilŽ¡Ãsito–“°ftp“uciale‘U ºftp://ftp.nuclecu.unam.mx/linux/local/mc-‘€4.0.tar.gzŽ¡¹(cš¸èhe–U se“la“memoria“non“mi“inganna“€è“piuttosto“len˜to).ŽŸ(ÀœÁ14Ž‘¬%ColophonŽŸ¿:¹Inš¸ètendo–:^proGdurre“aggiornamen˜ti“regolari“a“questo“doGcumen˜to“nc˜h€é“a˜vr€ò“tempšGo“p˜er“farlo“e“cose“in•¸èteressan“tiŽ¦da–—^dire.‘8;Ci€ò“signica“cš¸èhe“sono“a˜vido“di“conoscere“i“commen˜ti“dei“lettori.‘8;P˜osso“essere“pi€ù“c˜hiaro?‘8;RiusciteŽ¦a–±˜pšGensare“a“qualcosa“c¸èhe“p˜ossa“rendere“le“cose“pi€ù“facili?‘†èEsiste“qualcš¸èhe“n˜uo˜v˜o“strumen˜to“c˜he“lo“fa“inŽ¦automatico?Ž¡In–ÌÉogni“caso,›è se“a•¸èv“ete–ÌÉqualcosa“da“dire,˜su“questo“doGcumen¸èto“o“su“ºfsgrab“¹o“ºe2recover¹,˜mandatemi“due“righeŽ¦a‘U ½aaronc@pobox.com‘?¬¹.ŽŸ(ÀœÁ15Ž‘¬%Crediti–G\e“ringraziamenctiŽŸ”’‘'ÿ¹`If›ÞTI‘Þ1ha•¸èv“e˜seen˜farther˜than˜others,‘¡it˜is˜bGecause˜I‘Þ1w“as˜standing˜on˜the˜shoulders˜of˜gian“ts.'Ž¦‘(Isaac‘U Newton)ŽŸؼQuesto– ¸mini-Hoš¸èwto“deriv‘ÿqÐa“originariamen˜te“da“un“articolo“su“½comp.os.linux.misc‘ Md¹di“Robin“Glo˜v˜erŽ¦½swrglovr@met.rdg.ac.uk‘?¬¹.‘c•V‘ÿ*¸orrei–¥Òringraziare“Robin“pGer“a•¸èv“ermi›¥Ògen“tilmen“te˜p•Germesso˜di˜rielab“orare˜leŽ¦sue–è„idee“in“questo“mini-Ho¸èwto.‘MLV‘ÿ*¸orrei“inoltre“sfruttare“questa“oppšGortunit€à“p˜er“ringraziare“ancora“tutti“quelliŽ¦cš¸èhe–U mi“hanno“scritto“sull'Ho˜wto.‘q€V‘ÿ*¸ale“la“pGena“di“sforzarsi,“se“si“ricev˜ono“commen˜ti“pGositivi.Ž¡Alcuni–U riferimen¸èti“bibliograci:ŽŸؼ‘¸ŽŽŽ‘ÂF‘ÿ ºrisc®>h¹,–š?€Æleen›Y9(1995),“ÃEssential–‚ùSystem“A–ÿ}/dministr“ation‘ÄU¹,–š?seconda˜edizione,“O'Reilly˜and˜AssoGciates,Ž¦‘Inc.,–U ISBN:“1-56592-127-5.Ž¤®‘¸ŽŽŽ‘ÂGarnk®>el¹,–=ÁSimson,“Daniel–7êÂW‘ÿ ºeise“¹and“Stev¸èen“ÂStrassmann“¹(1994),›=ÁÃThe–xÐUnix-Haters“Handb–ÿ}/o“ok‘}¹,˜IDGŽ¦‘BošGoks,‘Ñ»ISBN:–°â1-56884-203-1.‘:ÁGran“parte“di“questo“libro“sono“solo“le“lamen¸ètele“adolescenziali“di“p˜ersoneŽ¦‘cš¸èhe–ÔpGensano“c˜he“il“Ãlor‘ÿ}/o‘u©¹sistema“opGerativ˜o“era“molto“meglio“di“Unix,‘óÚe“molto“del“resto“non“si“applicaŽ¦‘se›ksa•¸èv“ete˜uno˜spazio˜uten“te˜b•Gen˜scritto˜come˜quello˜GNU...‘´yma˜c'€è˜del˜buono,‘qad˜esempio˜v‘ÿqÐale˜la˜p“enaŽ¦‘leggere–U la“discussione“su“come“€è“facile“cancellare“i“le“sotto“Unix.Ž¡‘¸ŽŽŽ‘ÂGlo•®>v“er¹,›·qRobin–£È(31“Jan“1996),˜ÃHO¾˜W-TO‘Ûú:–Ü undelete“linux“les“(ext2fs/debugfs)^Ž¹,˜Articolo–£Èdi“usenet“suŽ¦‘comp.os.lin¸èux.misc.Ž¡‘¸ŽŽŽ‘ÂP®>eek¹,–ȲJerry‘ÿ*¸,“Tim›¥–ÂO'Reilly¹,“Mik¸èe˜ÂLoukides˜¹et˜al˜(1993),“ÃUNIX‘òPower‘ò1T‘ÿ;Èo‘ÿ}/ols‘Ò¹,“O'Reilly˜and˜AssoGciates,Ž¦‘Inc./Random–U House,“Inc.,“ISBN:“0-679-79073-X,“seconda“edizione“1998.ŽŽŽŒ‹Íë Û_2 ý ~?Ÿ„€ÕÁGŽÂ16.‘ñ8Legalese’ŠU£¹16ŽŽ ÕÁ ýV¯Á16Ž‘¬%LegaleseŽŸ¿:¹T‘ÿ*¸utti–U i“marc¸èhi“registrati“sono“propriet€à“dei“rispšGettivi“p˜ossessori.‘q€In“particolare:ŽŸؼ‘¸ŽŽŽ‘ÃMS-DOS‘‡‰¹e–U ÃWindows‘'5¹sono“marc¸èhi“registrati“dellaŽ¤®‘ÃMicr‘ÿ}/osoft–U ºhttp://www.microsoft.com/“¹.Ž©®‘¸ŽŽŽ‘ÃUNIX‘馹€è–U un“marc¸èhio“registrato“diŽ¡‘Ãthe–“°Op›ÿ}/en“Gr˜oup–U ºhttp://www.opengroup.org/“¹.Ž¦‘¸ŽŽŽŽ¦‘ŽŽŽ‘ÃLinux‘‰P¹€è–U un“marcš¸èhio“registrato“di“Lin˜us“T‘ÿ*¸orv‘ÿqÐalds“negli“USA“ed“in“alcune“altre“nazioni.ŽŸؼQuesto–ÐdoGcumenš¸èto“€è“Cop˜yrigh˜t‘Ýž²×cŽŽŽ“¸ ŽŽŽ‘+¡¹1997,‘Eü1999“Aaron“Crane“½aaronc@pobox.com‘?¬¹.‘³Pu€ò“essere“libGeramen˜teŽ¤ ®distribuito–¸Ìnella“sua“inš¸èterezza,‘Ñ·inclusa“tutta“questa“nota“di“cop˜yrigh˜t,‘Ñ·ma“non“pu€ò“essere“moGdicato“senzaŽ¡pšGermesso–¹Idell'autore“o“del“co˜ordinatore“degli“HOš¸èWTO‘¹/del“Lin˜ux“DoGcumen˜tation“Pro‘Ž0ject.‘úViene“data“unaŽ¡disp•Gensa›äFp“er˜la˜copia˜di˜piccole˜p“orzioni˜p“er˜recensioni˜o˜come˜citazione;‘ äin˜queste˜circostanze˜p“ossono˜essereŽ¡riproGdotte–U delle“sezioni“in“presenza“di“una“citazione“appropriata,“ancš¸èhe“senza“questa“nota“di“cop˜yrigh˜t.Ž©ؼL'autore–?Ysi“augura“ma“non“ricš¸èhiede“c˜he“c˜hi“in˜tenda“v˜endere“copie“di“questo“doGcumen˜to,‘yçsia“su“un“mezzoŽ¡leggibile–U su“computer“o“da“pšGersone,“informi“lui“o“il“co˜ordinatore“dei“Linš¸èux“HO˜WTO“delle“sue“in˜tenzioni.Ž¦Il–U coGordinatore“dei“Linš¸èux“HO˜WTO“€è“al“momen˜to“Tim“Byn˜um“½linux-howto@sunsite.unc.edu‘?¬¹.Ž¦T›ÿ*¸raduzione–U di“Eugenia“F˜ranzoni,“ºeugenia@pluto.linux.it¹.ŽŽŽŒøÛă’À;èÛ_2ÕÁGóqLË ecit0900óqLË ectt0900ó¥!¢N ecbx1200ó½HЃ ecti1000ó]fŒ ecbx1000ó&Lt$ffffecbx1440óø8‹ ecsi1000óŒ6 ecss1000óqLË ecit1000óþÖëI½q½qecss2074óqLË ectt1000ó 1ê± ecrm1000ó !",š cmsy10ùâzßßßßß