Kuna tofauti gani kati ya kiunga ngumu na kiunga cha mfano?


Nenda kwa jibu lililokubaliwa


Kama kichwa kinasema, ningependa kujua tofauti kati ya kiunga ngumu na kiunganisho laini kilichoundwa na amri ln . Amri man ln hutoa habari, lakini hajibu swali langu vya kutosha.

Pia, itakuwa nzuri ikiwa mtu anaweza kutoa mpangilio ambapo kiunga ngumu kinaweza kupendekezwa zaidi ya kiunga cha mfano.


493





2012-02-29




Idadi ya majibu: 9


Katika Linux / Unix, Njia za mkato zinajulikana kama Viungo


Kiunga ni cha aina mbili: Viungo laini (viungo vya ishara) au viungo ngumu.

  1. Viungo laini (viungo vya mfano)

    Unaweza kutengeneza viungo kwa faili na saraka, na unaweza kuunda viungo (njia za mkato) kwa kizigeu tofauti na nambari tofauti ya incode kutoka asili.

    Ikiwa nakala halisi imefutwa, kiunga hakitafanya kazi .

  2. Viungo Vigumu

    Viungo ngumu ni vya faili tu; huwezi kuunganishwa na faili kwenye kizigeu tofauti na nambari tofauti ya ingizo.

    Ikiwa nakala halisi imefutwa kiungo kitafanya kazi , kwa sababu inapata data ya msingi ambayo nakala halisi ilikuwa ikifikia.


Swali: Je! Ninawezaje kutengeneza laini?

Jibu: Kiungo laini kinaweza kufanywa na ln -s ; kwanza unahitaji kufafanua chanzo na kisha unahitaji kufafanua marudio. (Ikumbuke unahitaji kufafanua njia kamili za chanzo na mwisho; vinginevyo haitafanya kazi.)

  sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib32/libGL.so.1
             (----------Source-------)             ( Destination )
 


ingiza maelezo ya picha hapa

Kama unaweza kuona ina inodi tofauti na inaweza kufanywa kwa kizigeu tofauti.


Swali: Je! Ninawezaje kutengeneza Kiungo ngumu?

Jibu: Kiungo ngumu kinaweza kufanywa na ln ; kwanza unahitaji kufafanua chanzo na kisha unahitaji kufafanua marudio. (Ikumbuke unahitaji kufafanua njia kamili ya chanzo na mwisho; vinginevyo haitafanya kazi.)

Wacha sema nina script kwenye /script saraka iliyopewa jina firefox .

  ls -i # Shows you the inode
 5898242 firefox

 ln /scripts/firefox /scripts/on-fire
       ( Source )    ( Destination )
 


ingiza maelezo ya picha hapa

Kama unaweza kuona, ina kibodi sawa. Nikifuta ile ya asili kiungo kitafanya kazi, na itafanya kama asili.


ingiza maelezo ya picha hapa

Hapo juu ninaangalia kuwa kiunga hiki kinafanya kazi, na kisha futa hati ya asili ya firefox.


Unauliza: Itakuwa nzuri ikiwa mtu anaweza kutoa mpangilio ambapo kiunga ngumu kinaweza kupendekezwa zaidi ya kiunga cha mfano.

Jibu : Kulingana na mpangilio wa kizigeu cha diski, Viungo Vigumu vina mipaka ambayo lazima iwe kwenye kizigeu kimoja (-1 kumweka) na inaweza tu kuungana na faili (-1 kumweka) ), lakini nukta +1 ikiwa ya asili imefutwa kiunga. itafanya kazi na inafanya kama asili.

Kwa upande mwingine, kiunganisho laini kinaweza kuelekeza kwa saraka au faili (+1 kumweka) na hakuna kikomo cha kizigeu (+1 kumweka), lakini (-1 kumweka) ikiwa chanzo kimefutwa kiungo hakitafanya kazi.


65


2013-05-09

Hardlink sio pointer kwa faili, ni ingizo la saraka (faili) inayoelekeza ingizo sawa. Hata ukibadilisha jina la faili lingine, kiunzi ngumu bado huelekeza faili. Ikiwa utabadilisha faili nyingine na toleo jipya (kwa kunakili), hardlink haitaelekeza faili mpya. Unaweza tu kuwa na hardlinks ndani ya mfumo huo wa faili. Na hardlinks huna wazo la faili za asili na viungo, vyote ni sawa (fikiria kama kumbukumbu ya kitu). Ni wazo la kiwango cha chini sana.

Kwa upande mwingine, symlink inaelekeza njia nyingine (jina la faili); inasuluhisha jina la faili kila wakati unapoipata kupitia ulinganifu. Ikiwa utahamisha faili, ulinganifu hautafuata. Ikiwa utabadilisha faili na nyingine, kuweka jina, ulinganisho utaelekeza kwenye faili mpya. Symlink zinaweza kumaliza mfumo wa faili. Ukiwa na symlinks una tofauti wazi kabisa kati ya faili halisi na ulinganifu, ambao hauhifadhi maelezo kando ya njia kuhusu faili inayoelekeza.


325


2011-05-18

"Picha inafaa maneno elfu."
Uwakilishi wa kielelezo


Na, "Mfano unafaa aya mia ..."

Unda faili mbili:

 $ touch blah1   
$ touch blah2
 

Ingiza data ndani yao:

 $ echo "Cat" > blah1
$ echo "Dog" > blah2
 

Na kama inavyotarajiwa:

 $cat blah1; cat blah2
Cat
Dog
 

Wacha tuunda viungo ngumu na laini:

 $ ln blah1 blah1-hard
$ ln -s blah2 blah2-soft
 

Wacha tuone kile kilichotokea:

 $ ls -l

blah1
blah1-hard
blah2
blah2-soft -> blah2
 

Kubadilisha jina la blah1 haijalishi:

 $ mv blah1 blah1-new
$ cat blah1-hard
Cat
 

alama blah1-ngumu kwa ingizo, yaliyomo, ya faili - ambayo haibadilishwa.

 $ mv blah2 blah2-new
$ ls blah2-soft
blah2-soft
$ cat blah2-soft  
cat: blah2-soft: No such file or directory
 

Yaliyomo kwenye faili hayakuweza kupatikana kwa sababu kiunganisho laini huashiria jina, ambalo lilibadilishwa, na sio yaliyomo.
Vivyo hivyo, ikiwa blah1 inafutwa, blah1-ngumu bado inashikilia yaliyomo; ikiwa blah2 imefutwa, blah2-laini ni kiunga cha faili ambayo haipo.


chanzo: kunakili kunakili kutoka kwa StackOverflow!


325


2016-07-21

Zote ni viashiria kwa faili; tofauti ni aina ya pointer. Kiunga cha kiashiria kinaashiria faili nyingine kwa jina . Inayo hali maalum ya kitambulisho inayoitambulisha kama kiunga cha ishara, na yaliyomo ndani yake ni jina la faili halisi. Kwa sababu ina jina tu, jina hilo sio lazima liwepo, au linaweza kuwa kwenye mfumo tofauti wa faili. Ikiwa utabadilisha faili iliyopewa jina (badilisha yaliyomo bila kuathiri jina lake), basi kiunga bado kina jina moja, na kwa hivyo sasa inaelekeza faili mpya. Unaweza kutambua kiunga cha kiurahisi na uone jina la faili linaloelekeza.

Kiunga kigumu huelekeza faili kwa nambari ya inode. Kama hivyo, viungo ngumu sio tofauti na jina la kwanza la faili. Hakuna jina "halisi" dhidi ya jina la kiungo ngumu; viungo vyote ngumu ni majina halali kwa faili. Kwa sababu ya hii, faili unayounganisha lazima iwepo na iwe katika mfumo huo wa faili ambapo unajaribu kuunda kiunga. Ukifuta jina la asili, basi kiunga ngumu bado huelekeza faili moja. Kwa sababu viungo vyote ngumu ni majina halali kwa faili, huwezi kuangalia moja na kuona majina mengine ya faili; kupata hii, lazima uangalie kila faili na ulinganishe nambari ya ingizo lao ili upate jina / majina mengine ambayo yana nambari inayofanana ya ingizo.

Unaweza kuwaambia ni faili ngapi zina faili kutoka kwa mazao ls -l . Nambari ya kwanza baada ya hali ya faili ndio hesabu ya kiunganisho. Faili iliyo na kiungo zaidi ya 1 ina majina mengine mahali, na kwa upande mwingine, faili iliyo na hesabu ya kiungo 1 tu haina viungo vingine (vingine) ngumu.


88


2011-05-18

Hardlink inaweza kufanya kazi tu kwenye mfumo huo wa faili, ni jina tofauti la ingizo sawa (faili hurejelewa ndani na viingilio). Faili litafutwa tu kutoka kwa diski wakati kiunga cha mwisho cha ingizo lake kitapita (wewe rm au unlink kiungo cha mwisho). Hardlinks kawaida hufanya kazi kwa faili, sio saraka.

Symlink (kiunga cha ishara) ni faili maalum iliyo na njia ya faili nyingine. Njia hii inaweza kuwa kamili au ya jamaa. symlink zinaweza kufanya kazi katika mifumo yote ya faili, na inaweza hata kuelekeza faili tofauti, ikiwa kwa mfano hujiondoa diski ngumu ya nje na kuibadilisha na nyingine, ambayo ina faili tofauti kwa njia hiyo hiyo. Symlink inaweza kuelekeza kwa faili au saraka.


58


2012-02-29

Jibu moja kutoka kwa nyuzi nyingine (sasa imeunganishwa kutoka juu ya chapisho lako) linataja ukurasa huu ambao nadhani ni maelezo mazuri ya kiwango cha kati. Ikiwa unapotea katika sanaa ya ascii, hii ndio toleo la tl; dr:

  • Faili za kawaida ni pointer kutoka kwa mfumo wa faili kwenda kwa njia ambayo inageuka data ya mwili. Sehemu ya faili huhifadhi kiunga chake kwa mfumo wa faili (kimsingi njia yake) na kiunga cha ingizo.
  • Viunga ngumu, ni kama faili tu. Ni tu pointer ya ziada moja kwa moja kwa ingizo.
  • Viungo vya ishara ni faili tofauti (pamoja na ingizo tofauti na data) ambazo huhifadhi njia ya mfumo wa faili.

Mfumo wa kernel na mfumo wa faili unaohusika hutafsiri kila kitu kwa uwazi.

Kwa hivyo kulingana na hiyo:

  • Viungo vikali huruhusu tu mfumo wa faili-moja. Symlink zinaweza kuelekeza kwa njia yoyote.
  • Viunga ngumu (kimsingi) zinaonyesha data kabisa. Symlink zinaweza kuelekeza kwa njia za jamaa (mfano ../parent.file )
  • Kwa kuongezea, ikiwa unahamisha kilele cha kusudio la kiunga ngumu (ambacho, kumbuka, yenyewe ni kiunganishi kigumu kinachoelekeza kwenye kibodi), kiunga ngumu bado inafanya kazi. Kusonga lengo la ulinganifu kawaida kunaweza kuvunja ulinganifu.
  • Kutatua kiunganishi kigumu kunaweza kuwa haraka lakini immeasurav hivyo. Sehemu hiyo isiyo na maana ya kasi huja kwa gharama ya mfumo wa faili usiobadilika.

Labda ningejichanganya kidogo lakini nikisoma vitu mbalimbali, ninajitahidi kupata tofauti kati ya faili ya kawaida na hardlink. Njia ninayosoma ni kila faili lina hardlink (kuhifadhi jina la faili), ikiunganisha na ingizo inayoelekeza kwenye data ya mwili.

Kuongeza hardlink hutoa tu ingizo na saraka inayoongeza msingi wa mfumo. Hiyo ni kweli?


21


2011-05-18

Wakati wa kutumia Kiungo laini:

Unganisha kwenye mifumo ya faili: Ikiwa unataka kuunganisha faili kwenye mfumo wote wa faili, unaweza kutumia tu ulalozi / viungo laini.

Viunga vya saraka: Ikiwa unataka kuunganisha saraka, basi lazima uwe ukitumia Viungo laini, kwani hauwezi kuunda kiunga ngumu cha saraka.

Wakati wa kutumia Kiungo Hard:

Nafasi ya Hifadhi: Viungo vikali huchukua nafasi isiyoweza kutofautishwa kabisa, kwani hakuna viingilio vipya vilivyoundwa wakati wa kuunda viungo ngumu. Katika viungo laini tunaunda faili ambayo hutumia nafasi (kawaida 4KB, kulingana na mfumo wa faili)

Utendaji: Utendaji utakuwa bora kidogo wakati unapata kiunga ngumu, kwani unapata moja kwa moja diski pointer badala ya kupitia faili nyingine. Kuhamisha eneo la faili: Ikiwa utahamisha faili ya chanzo kwa eneo lingine kwenye mfumo huo wa faili, kiunga ngumu bado kitafanya kazi, lakini kiungo laini kitashindwa.

Upungufu: Ikiwa unataka kuhakikisha usalama wa data yako, unapaswa kutumia kiunga ngumu, kama ilivyo kwenye kiungo ngumu, data iko salama, hadi viungo vyote kwenye faili vitakapofutwa, badala ya ile kwenye kiungo laini, utapoteza data ikiwa mfano mkuu wa faili umefutwa.


15


2014-09-06

Machafuko yanaanza unapojaribu kupata tofauti kati ya "jina la faili" na kiunga ngumu kwa sababu hakuna.

Kila faili unayounda ina data kwenye diski na kiunga ngumu - ambayo ni jina la faili katika saraka na pointer kwa data kwenye diski. Mwisho wa hadithi. Wakati kiungo ngumu (au tu) cha mwisho kimefutwa, basi OS inajua kuwa data haihitajiki tena.

Kutoka kwa hili unaweza kuona kwamba data halisi haijafutwa kamwe, ni viungo tu ngumu. Na inapokuwa imejaa vya kutosha kwenye diski, data inaweza kutolewa tena na data ya faili nyingine. Hadi wakati huo, data kutoka kwa faili iliyofutwa inaweza kupatikana, lakini ni ngumu kupata bila kiunga ngumu.

Symlinks, kama nilivyoelezea hapo awali, anakwambia tu "kuna faili iliyotajwa <targetname> kwenye folda inayoitwa <targetfolder> ". Wao huelekeza kwenye kiungo ngumu. Hawajui data iko wapi. Kiungo ngumu anajua hilo.


8


2015-03-01

Ni rahisi sana. Faili (na saraka!) Zimehifadhiwa kwenye anwani kwenye kifaa cha kuzuia (HDD au chochote). Kawaida unayo jina moja lililowekwa kwenye anwani, na ndivyo unapata faili yako. Kiunga ngumu ni jina la pili, la tatu, nk, lililowekwa kwenye anwani moja. Kiungo cha mfano badala yake kinamaanisha ishara - jina - na hivyo ndivyo jina la pili limepangwa kwenye jina la kwanza. Kwa kadiri kernel inavyohusika, mara inavyosoma kiashiria cha kiunganishi cha kiashiria huacha na kurudi nyuma kwa thamani ya lengo kama jina la faili (zaidi au chini) kwa hivyo ulinganifu wa jamaa unawezekana lakini hauna maana. Jina la lengo halijatumika juu ya kiwango cha mfumo wa faili isipokuwa ikiwa limekwishawekwa wazi katika nambari ya utumiaji.


0


2016-07-03