
Полный текст первых минут лекции «Жёсткая ссылка и символические ссылки» из видеокурса PracticU – субтитры с временной меткой для каждого абзаца. Так можно прочитать и найти нужные темы ещё до начала обучения.
Добро пожаловать на лекцию про Hardlink. На этой лекции мы поймем, чем отличается Softlink от Hardlink. И это все встроено в NTFS файловую систему.
Hardlink это как шорткат на уровне файловой системы. То есть это как ярлык, который указывает на какой-то файл.
Но обычные шорткаты, они работают на уровне самого Windows. И не все приложения, не все программы умеют понимать шорткат.
Поэтому мы хотим сделать вот эти вот шорткаты, эти указатели на файлы в другом месте прозрачно для приложения на уровне файловой системы.
Для этого у нас есть команда mk-link и мы начнем с Hardlink. Hardlink это указатель на те же самые мегабайты на диске, только с другого имени.
Что такое с другого имени? Это с другого файла. У нас есть ощущение, что есть два разных файла в файловой системе, но они оба указывают на одни и те же мегабайты на жестком диске.
То есть фактически на одну и ту же информацию, на один и тот же файл есть два или три или тысячу имен. Кажется, максимальный предел там 1025.
То есть мы можем в одну и ту же файловую систему на один и тот же файл сделать несколько имен. А физически это будет занимать только одно место.
То есть мы не будем тратить место на копипейст, если одно делает апдейт, обновляет информацию, редактирует файл, моментально второй файл редактируется, но это не второй файл, это тот же самый файл, просто у него два указателя в таблице ntfs.
Чтобы не делать самим вот эти вот команды mk-link, slash-h, это все писать я не люблю. Нам не надо сейчас автоматизировать процесс и не надо писать этот скрипт.
Поэтому я хочу использовать графический инструмент, бесплатный, и он называется LinkShell Extensions. LinkShell Extensions это бесплатный инструмент, который я нашел через Google.
Напишите LinkShell Extensions, вы его сразу же найдете. И нам надо download, скачать его И вот здесь внизу, немножечко ниже, мы увидим download на 64-битный Windows Я его уже по правде скачал и установил Там ничего нет, там next, next, next, ничего особого И после того, как я его установил, я могу пользоваться hardlink без командной строки
Давайте сейчас создадим любой текстовой файл, предположим 1.txt И в этот файл запишем важную информацию И теперь мы можем с помощью графической добавки нажать ping link source, взять его как оригинал.
И теперь мы можем сделать paste, drop as, либо hardlink, либо symboling link. Вот этот вот hardlink это и есть второй указатель на оригинальный файл. Единственное, что это работает только если мы в одной и той же файловой системе.
То есть если мы на том же самом дисководе, диск c, диск d, надо оставаться на одном и том же диске. Видите, у меня сейчас два указателя на одно и то же место на диске.
Вот я поменял информацию и теперь в оригинальном файле она тоже изменилась. И наоборот, оба имен файла смотрят на одни и те же мегабайты.
Это называется Hardlink. Еще раз, Hardlink ограничен двумя вещами. Первое, это только файлы, папки он не поддерживает. И второе, это только на одной и той же партии.
Давайте сейчас зайдем в эту папку и мы увидим, что с точки зрения пользователя файловой системы это самый обычный файл. В принципе, это обычный файл, он ничем не отличается от оригинала.
Оригинал он не лучше и не хуже, не главнее, не второстепенней. Есть информация на жестком диске и на нее есть два указателя.
Кто был первый, кто был последний, это совершенно не важно. Два равноправных указателя на одни и те же мегабайты в диске. Эта информация записана в таблице NTFS в начале, и то, что мы видим там 3 байта или 6 байтов, это не двойное место на жестком диске.
Просто CMD не умеет понимать, что это не 6 байтов, а только 3 байта. То есть, с его точки зрения, это обычные файлы. Так, давайте я вам сейчас покажу, что будет, если я сделаю символинг-линк.
То есть, не hard-линк, а символичный линк или soft-линк, он еще иногда называется. Кстати, в Linux есть то же самое. Так, мы сейчас берем этот Symbol Link Link и мы можем его кинуть на другую партицию, на другой диск, на другой Volume, на диск D.
Видите, у меня есть возможность кинуть на диске C и Hard и Symbol Link, а на диске D я могу кинуть только Symbol Link Link. То есть вот этот символичный линк, он не ограничен как Hard Link на одну и ту же партицию.
То есть Symbol Link Link может быть и на диске C, и на диске D, и на любом диске, он менее ограничен. Он как бы лучше. Но в чем разница? В том, что если я меняю контент, то он везде поменяется.
Кстати, заметьте, что каждый файл видит все свои hardlink, потому что это в таблице ntfs прописано. Но он не видит символинг-линк. То есть символичные линки, оригинальный файл не знает, что они существуют.
Символинг-линк, он односторонний. То есть он указывает на файл, но файл не знает, что указывают на него. Поэтому Hardlink это как бы оригинал, а Symboling Link он более ограниченный.
Во-первых, мы видим в CMD, что у нас есть метка, что это символичный линк. И показано, на какое имя он указывает. А если я возьму и заменю это имя, и сделаю два точка тексти, что будет?
Hardlink продолжит указывать на те же мегабайты файлы. Ему не важно, что там во второй записи изменилось имя.
А Symboling Link это уже не будет работать. Видите, он уже этого не понимает. Он указывает на имя, которого не существует на жестком диске.
Он указывает на один текст, а у нас на жестком диске есть два текста. То есть Symboling Link сломается в тот момент, когда мы поменяем имя. Кстати, если я верну имя, то Symboling Link продолжит работать.
Заметьте, я вернул имя и Symboling Link начал работать. Но если я опять поменяю имя, то он перестанет работать.
То есть я вам хочу показать, что Symboling Link не ограничен одним диском. Он даже может по сети на дисковод на удаленной шаре указывать.
Но он... Но этого не делать. Я вам потом расскажу, почему это не делать. Так, символинг-линк не ограничен одной партицией. Он может быть на дисководе D, как мы видим прямо сейчас.
Но он чувствительен к изменению в имени. Вот мы видим в дисководе D символинг-линк указывает на файл 2.txt. Если 2.txt не будет, то он работать не будет.
И мы видим, что можно с дисковода C указывать на дисковод D. И с D на C. И мы видим, что мы можем с ним работать как с обычным файлом.
Ведь я запустил команду type, посмотреть, что есть внутри файла, и работаю с ним как с обычным файлом на дисководе D.