Однією з фундаментальних вимог будь-якої пристойної операційної системи та її основної файлової системи є наявність об’єктів, які посилаються на файли та каталоги у сховищі. Це дозволяє коду і користувачам отримувати доступ до цих файлів і папок опосередковано, посилаючись на них з іншого місця. У більшості систем є два способи досягнення цього: посилання на шлях до каталогу та ім’я файлу/теки або посилання на ідентифікаційний номер, унікальний для цієї файлової системи, та частину атрибутів цього файлу, зазвичай номер індексу (inode). Вони утворюють символічні та жорсткі посилання відповідно.

 

Сімлінк

 

Сімпосилання або сімлінк – це окремий файл, що містить шлях до файлу або папки, на яку воно посилається. Таким чином, воно має власний об’єкт файлової системи і власні крихітні дані, що містять шлях до оригіналу. Це працює добре, доки цей шлях зберігається у повному обсязі. Інод оригінального файлу не знає про жодні символічні посилання на нього, тому видалення оригінального файлу також розриває усі символічні посилання на цей файл.

 

 

Сімпосилання легко створити у терміналі за допомогою команди на кшталт

ln -s /Users/myname/Movies/myMovie.mov /Users/myname/Documents/Project1/myNewMovie.mov

яка створює крихітний файл myNewMovie.mov, що містить шлях /Users/myname/Movies/myMovie.mov, який вказує на файл, на який він посилається.

Ви не можете створювати символічні посилання за допомогою Finder, але можете за допомогою сторонніх програм, і тепер вони повинні повністю працювати з мініатюрами та попереднім переглядом QuickLook. Вони практично не займають місця на диску. Шляхи, що використовуються, можуть бути коротшими і відносними, що дає змогу переміщувати вкладені теки в межах тому, що порушило б повний абсолютний шлях. Вони також можуть вказувати на файли на інших томах, якщо шлях до них залишається правильним.

Шляхи у символічних посиланнях працюють найнадійніше у файлі macOS SSV, оскільки він структурований і статичний. Хоча дисциплінований користувач може ефективно використовувати їх у своїй домашній теці, вони схильні до непередбачуваних ефектів, таких як перейменування проміжного каталогу, переміщення будь-якого компонента у шляху і навіть зміна нормалізації Юнікоду для символів у шляху. Оскільки символічні посилання містять лише шлях, немає можливості відновити пошкоджений шлях, що робить їх за своєю природою крихкими, а не надійними.

 

Жорсткі посилання

 

У APFS жорстке посилання – це фактично один файл з одним об’єктом файлової системи, який має два або більше посилань у вигляді дочірніх файлів (Siblings), пов’язаних з інодом файлу. Цей об’єкт має єдиний набір файлових розширень, тому кожен з сиблінгів посилається на один і той самий файл і дані, хоча шляхи до них зазвичай відрізняються. В об’єкті лічильник посилань дорівнює кількості сиблінгів; коли сиблінги видаляються, цей лічильник зменшується, і об’єкт видаляється лише тоді, коли лічильник досягає нуля.

Жорсткі посилання легко створюються у терміналі за допомогою команди на кшталт

ln /Users/myname/Movies/myMovie.mov /Users/myname/Documents/Project1/myNewMovie.mov

щоб створити нове жорстке посилання з назвою myNewMovie.mov на вихідний файл myMovie.mov.

Ви не можете створювати жорсткі посилання за допомогою Finder, а оскільки вони використовують єдиний набір файлових розширень, вони практично не займають місця на диску.

Жорсткі посилання виглядають і працюють точно так само, як оригінал, і їх можна вільно переміщати в межах одного тому, оскільки вони не залежать від шляхів. Однак скопіюйте один файл до іншого тому, і копія буде повністю незв’язаним файлом. Жорсткі посилання на файли і каталоги були одним з основних компонентів резервних копій Time Machine на HFS+, але оскільки APFS не підтримує жорсткі посилання на каталоги, Time Machine тепер змушена використовувати інший формат резервних копій для зберігання в APFS.

 

Псевдоніми та закладки

 

Псевдоніми з’явилися у System 7, коли Mac OS не мала можливостей BSD/Unix, які з’явилися у Mac OS X. У той час шляхи використовувалися рідко, що робило символічні посилання неправдоподібними, тому початковий псевдонім Finder був побудований на основі еквівалента номера інода. Згодом вони перетворилися на комбінацію, що містить інформацію про шлях і номер вузла, яка дозволяє розпізнавати посилання, що розривають шлях у символічних посиланнях, і може поширюватися на інші томи, на відміну від жорстких посилань.

Незважаючи на їхню надійність і універсальність, macOS не надає вбудованих командних інструментів для створення псевдонімів або їхнього перетворення на шляхи, що робить їх марними для скриптів оболонки або командного рядка, хоча вільна alisma вирішує ці проблеми. Вони також не були інтегровані у APFS як окремі об’єкти у файловій системі, де вони є просто ще одним файлом.

Закладки є різновидом псевдонімів, призначених для використання у файлах для подібних цілей. Наприклад, список файлів, показаний у команді меню «Відкрити нещодавні» у програмах, зібрано з файлу, що містить закладки до кожного з цих документів. Більшість списків програм і файлів, створених Службами запуску та іншими підсистемами, також покладаються на закладки.

 

Демонстрація

 

Щоб продемонструвати, як поводяться ці три типи посилань, створіть папку у папці Домашні документи (~/Documents) і скопіюйте до неї тестовий документ. Поруч з цим файлом створіть іншу папку з назвою links і в ній створіть символічне посилання (використовуючи повний абсолютний шлях), жорстке посилання і псевдонім на вихідний файл.

Скопіюйте файл, що містить посилання, до іншого тому і зверніть увагу на те, що жорстке посилання стає окремим локальним файлом, а не посиланням, але символічне посилання та псевдонім продовжують посилатися на оригінал, шлях до якого залишається незмінним.

Перейменуйте папку, яка містить тестовий документ і папку з посиланнями, і зверніть увагу на те, що символічне посилання розривається, хоча QuickLook все ще може показувати кешовану мініатюру для нього. Зверніть увагу, що копія символічного посилання на іншому томі також буде розірвана, оскільки шлях, який використовувався для обох томів, більше не існує.

Нарешті, перемістіть теку з посиланнями до теки з оригінальним документом у теку ~/Documents і зверніть увагу на те, що симпосилання також буде розірвано.

З усіх трьох типів посилань єдиним, який виявився стійким до всіх цих змін, є псевдонім.

 

Англомовну версію статті ви можете переглянути на eclecticlight.co