Кіріспе
Кез келген файл, басқа файлға немесе каталогқа сілтеме қамтитын, Microsoft дерек алмасу форматы.
the Microsoft data exchange format
Компьютерлік техникада символдық сілтеме (сондай-ақ симдік сілтеме немесе жұмсақ сілтеме) – файл немесе каталогқа (мақсат деп аталады) жол арқылы көрсетуге арналған файл. Символдық сілтемелер POSIX және FreeBSD, Linux және macOS сияқты Unix-ке ұқсас операциялық жүйелермен қолдалады. Windows 7 және Windows Vista, сондай-ақ Windows 2000 және Windows XP-де қысқа жол файлдары түрінде шектеулі қолдау бар. IBM 7090-дағы CTSS жүйесінде 1963 жылы атау бойынша байланыстырылған файлдар болған. 1978 жылы DEC-тің мини-компьютерлік операциялық жүйелері және Data General-дің RDOS жүйесіне символдық сілтемелер енгізілді.
Шолу
Символдық сілтемеде операциялық жүйемен автоматты түрде басқа файлға немесе каталогқа жол ретінде түсіндірілетін және одан әрі іске қосылатын мәтіндік тізбе болады. Бұл басқа файл немесе каталог "мақсат" деп аталады. Символдық сілтеме – бұл өз мақсатынан тәуелсіз болатын екінші файл. Егер символдық сілтеме жойылса, оның мақсатына ешқандай әсер етпейді. Егер символдық сілтеме мақсатқа сілтесе, ал кейіннен ол мақсат жылжытылса, аты өзгертілсе немесе жойылса, символдық сілтеме автоматты түрде жаңартылмайды немесе жойылмайды, бірақ бұрынғы мақсатқа сілтейді, ол қазірде жоқ орынға немесе файлға бағытталған болады. Жылжытылған немесе жоқ мақсаттарға сілтеме жасайтын символдық сілтемелер кейде бұзылған, қараусыз қалған, өлі немесе ілгекті деп аталады. Символдық сілтемелер қатты сілтемелерден өзгеше. Қатты сілтемелер әртүрлі томдардағы немесе файлдық жүйелердегі жолдарды байланыстырмайды, ал символдық сілтемелер сілтеме мен мақсат орналасқан томдарға қарамастан кез келген файлға немесе каталогқа сілтеме жасай алады. Қатты сілтемелер әрқашан бар файлға сілтеме жасайды, ал символдық сілтемелерде ештеңеге сілтеме жасамайтын кездейсоқ жол болуы мүмкін. Символдық сілтемелер көптеген операциялар үшін түсінікті жұмыс істейді: символдық сілтемемен аталған файлдарды оқитын немесе жазатын бағдарламалар мақсатты файлмен тікелей жұмыс істегендей әрекет етеді. Дегенмен, олардың әсері әдеттегі иерархиялық файлдық жүйені ағаштан бағытталған графқа айналдырады, бұл процестің ағымдағы каталогын анықтау сияқты қарапайым операцияларға әсер етуі мүмкін. Unix стандарты да символдық сілтемелердің алдында сенімді жұмыс істемейді. Кейбір қабықшалар ағаш тәрізді иерархияның иллюзиясын сақтау үшін эвристикалық әдіспен тырысады, бірақ олар осылай істегенде, олар басқа бағдарламалардан өзге нәтижелер береді, олар осындай эвристикалық әдіссіз жол атауларын басқарады және операциялық жүйеге сенеді. Символдық сілтемелерді ерекше өңдеуі қажет бағдарламалар (мысалы, қабықшалар және резервтік көшірме құралдары) оларды тікелей анықтап, өңдеуі керек. Кейбір Unix және Linux дистрибутивтері файлдық жүйенің иерархиясын қайта құру үшін символдық сілтемелерді кеңінен пайдаланады. Бұл бірнеше механизмдер арқылы жүзеге асырылады, мысалы, түрлендіргіштер және контекстке тәуелді символдық сілтемелер. Бұл интуитивті немесе қосымшаға қатысты каталог ағашын құруға және жүйелік функциялар мен құралдардың негізгі жиынтығын қайта құруға мәжбүр болмай, жүйені қайта ұйымдастыруға мүмкіндік береді.
Символды сілтемелерді сақтау
Символикалық сілтемелердің алғашқы іске асырылуы символикалық сілтеме туралы ақпаратты қалыпты файлдардағы дерек ретінде сақтады. Файл сілтеме нысанына мәтіндік сілтемеден тұрады, ал файл режимі биттері файлдың типі символикалық сілтеме екенін көрсетеді. Бұл әдіс баяу болды және кішкентай жүйелерде дискілік кеңістікті тиімсіз пайдаланды. «Жылдам сілтемелер» деп аталатын жақсарту, нысан жолын дискідегі файл туралы ақпаратты сақтау үшін қолданылатын дерек құрылымдарында (инодтар) сақтауға мүмкіндік берді. Бұл орын әдетте файлға бөлінген дискілік блоктардың тізімін сақтайды. Осылайша, қысқа нысан жолы бар сілтемелерге жылдам қол жеткізіледі. Жылдам сілтемелерді қолданатын жүйелер, егер нысан жолы қол жетімді инод кеңістігінен асып кетсе, бастапқы әдіске қайта оралады. Бастапқы стиль кейіннен «баяу сілтеме» деп аталды. Ол сондай-ақ басқа немесе ескі операциялық жүйелермен дискілік үйлесімділікті қамтамасыз ету үшін де қолданылады. Инодтың ішінде сілтеме мәнін сақтау дискілік блокты және дискіні оқуды үнемдесе де, операциялық жүйе сілтеме жолының атауын талдауы керек, бұл әрқашан қосымша инодтарды оқуды және әдетте басқа, тіпті көптеген каталогтарды оқуды талап етеді, файлдар тізімін және олардың әрқайсысының инодтарын өңдейді, сілтеме жолының бөліктерімен сәйкестік табу үшін. «Жылдам сілтемелер» тек сілтеме бір каталогтағы файлға сілтеме жасағанда ғана басқа сілтемелерге қарағанда айтарлықтай жақсы өнімділік көрсетеді. POSIX стандартына сәйкес келетін іске асырулардың басым көпшілігі жылдам сілтемелерді қолданады. Алайда, POSIX стандарты сілтемелер үшін қалыпты файлдарға тән файл күйі туралы барлық ақпаратты іске асыруды талап етпейді. Бұл іске асыруларға басқа шешімдерді қолдануға мүмкіндік береді, мысалы, каталог жазбаларында сілтеме деректерін сақтау. Символикалық сілтемеге файл жүйесінің рұқсаттары қолданылмайды; нысан файлдың кіру режимдері нысан файлдың өзінің рұқсаттарымен басқарылады. Кейбір операциялық жүйелер, мысалы FreeBSD, lchmod және lchflags жүйелік шақырулары арқылы символикалық сілтемеге файл рұқсаттарын және файл жүйесінің атрибуттарын өзгерту мүмкіндігін ұсынады. Сілтеменің көрсетілген өлшемі – ол көрсеткен жолдағы таңбалар саны.
Қателерді өңдеу
Дәстүрлі Unix файлдық жүйесі ағаш тәрізді құрылымға ие, бірақ символдық сілтемелер оған циклдарды қосуға мүмкіндік береді. Біріктіру нүктелерінен (junction points) айырмашылығы, символдық сілтеме файлға немесе қашықтағы Серверлік хабар алмасу блогының (SMB) желілік жолына да сілтеме жасай алады. Сонымен қатар, NTFS символдық сілтемесі файлдық жүйелер арасындағы сілтемелерді толыққанды қолдайды. Дегенмен, хосттар арасындағы символдық сілтемелерді қамтамасыз ететін мүмкіндік, қашықтағы жүйенің де оларды қолдауын қажет етеді. Символдық сілтемелер көшуге және POSIX операциялық жүйелерімен қолданбалардың үйлесімділігіне көмектесу үшін жасалған. Microsoft Windows Vista-ның символдық сілтемелерінің "UNIX сілтемелері сияқты жұмыс істеуін" қамтамасыз етуді мақсат етті. Алайда, оның іске асылуы Unix символдық сілтемелерінен бірнеше жағынан өзгеше. Мысалы, Windows Vista пайдаланушылары символдық сілтемені жасағанда, оның файл ме, каталог ма екенін қолмен көрсетуі керек. Windows 7 және Vista белгілі бір жол үшін максимум 31 қайта жазу нүктесін (reparse points) (сонымен қатар, символдық сілтемелерді) қолдайды (яғни, кез келген жолда Windows тоқтағанша максимум 31 аралық сілтеме болуы мүмкін). Символдық сілтеме құру құқығына ие пайдаланушылар ғана символдық сілтемелерді құруы мүмкін. Егер бұл қажетті мінез-құлық болмаса, оны Жергілікті қауіпсіздік саясатын басқару консолінде өзгерту қажет. Сонымен қатар, файлдарға жасалған NTFS символдық сілтемелері каталогтарға жасалған NTFS символдық сілтемелерінен ерекшеленеді, сондықтан оларды POSIX-тегідей бірдей мақсатта қолдануға болмайды, онда бір символдық сілтеме файлдарға немесе каталогтарға сілтеме жасай алады. Windows Vista және одан кейінгі нұсқаларда, егер жұмыс каталогының жолы символдық сілтемемен аяқталса, ағымдағы жолдың аталық сілтемесі (current parent path reference) оның мақсатына емес, символдық сілтеменің аталық каталогына сілтеме жасайды. Бұл мінез-құлық кем дегенде, Linux-ты қоса алғанда, кейбір POSIX жүйелерінде де кездеседі, бірақ операциялық жүйелік шақырулар арқылы файлдар мен каталогтарға қол жеткізу кезінде ешқашан болмайды. Мысалы, bash-тың кіріктірілген командалары (built-in commands) және ағымдағы логикалық каталогта жұмыс істейді. скриптілерде нақты ағымдағы жұмыс каталогын анықтау үшін жиі қолданылады. Кез келген жол жүйелік шақырумен қолданылғанда, псевдокаталогты (pseudo directory entry) қамтитын каталогтың нақты файлдық жүйесінің аталық бөлігі қолданылады. Сондықтан, және мүлдем басқа нәтижелерді қайтаруы мүмкін.
NTFS түйісу нүктелері
Windows 2000 нұсқасындағы NTFS қайта талдау нүктелерін енгізді, бұл томдық бекіту нүктелері мен түйіспе нүктелерін пайдалануға, басқалармен қатар, мүмкіндік берді. Түйіспе нүктелері тек каталогтар үшін ғана, сонымен қатар тек жергілікті каталогтар үшін ғана қолданылады; қашықтан ортақ пайдаланымға түйіспе нүктелері қолдау көрсетілмейді. Windows 2000 және XP ресурстық жиынтықтарына түйіспе нүктелерін жасауға арналған бағдарлама кіреді; ал Sysinternals-тің Марк Руссинович тарапынан Junction деп аталатын күштірек бағдарлама таратылды. Барлық стандартты қолданбалар қайта талдау нүктелерін қолдамайды. Көзге түрірлігі, Сақтық көшірме осы мәселеден зардап шегеді және сақтық көшірме жасалатын папкаларда қайта талдау нүктесі болған жағдайда 0x80070003 қате хабарламасын шығарады.
POSIX және Windows символикалық сілтемелерін салыстыру
Символды сілтеме Көшпелі түйін Қатты сілтеме Сілтемені жойғанда Нысана өзгеріссіз қалады Нысана жойылады Сілтеме санасы кемітіледі. 0-ге жеткенде, нысана жойылады. Нысана жылжытылғанда Сілтеме жарамсыз болады Сілтеме жарамсыз болады Сілтеме жарамды болып қалады Салыстырмалы жол Басқа томда болуы мүмкін бе? Windows файлдарына сілтеме rowspan="2" Windows папкаларына сілтеме Unix файлдарына сілтеме Unix папкаларына сілтеме
Басқа іске асырулар
Символды сілтемелерге ұқсас мүмкіндіктерді жүзеге асыру.
MIT-тің алғашқы кезеңдері
MIT Compatible Time Sharing System 1963 ж. шамасында және Incompatible Time Sharing System екеуінде де мақсатты файлдың аты каталог жазбасында көрсетілген байланыстырылған файлдар бар.
Символды байланыстардың өзгермелі түрлері
Символды сілтемелер контекстке тәуелді немесе өзгермелі түрде іске асырылуы мүмкін, сонда сілтеме конфигурация параметріне, орындалу уақыты параметріне немесе басқа да сәттегі жағдайға байланысты әртүрлі нысандарға бағытталуы мүмкін. Айырмалы немесе түрлендірілген символды сілтеме – ішінде өзгермелі атауы бар символды сілтеме. Бұл стандартты символды сілтемемен мүмкін емес, файлдық жүйенің ретінде біршама икемділікке мүмкіндік береді. Символды сілтемеге енгізілген айнымалылар пайдаланушы және ортаға қатысты ақпаратты қамтуы мүмкін. Вариантты символды сілтемелерді қолданатын операциялық жүйелерге NetBSD, DragonFly BSD, Domain/OS жатады.