Pull to refresh

Comments 108

На самом деле симлинков в NTFS нет. Есть junction (точки монтирования) и хардлинки.
Ну и чем они отличаются от симлинков? Тем что нельзя делать ссылки на файлы? В Linux и/или Vista — можно, это ограничение не NTFS, а ядра Windows XP. Вы ещё скажите что в имени файла на NTFS нельзя использовать кавычки и двоеточие…
На файлы создаются хардлинки, а не точки монтирования.
Ещё раз: это ограничение ядра XP. Linux спокойно создаёт symlink'и на файлы. И Vista — тоже. Вернее в Vista они всё запутали до невозможности — наряду с обычной символической ссылкой существует сомволическая ссылка на каталог! Но это просто один бит — чтобы никто не догадался, очевидно…
В Linux как правило NTFS не использутся.

Касательно Vista: симлинки — да. junction-ы — нет.
Имеется ввиду, что Linux умееть делать симлинки на своих родных файловых системах, а не на NTFS. Просто там это воспринимается как само-сабой разумеющееся, одна из основ работы в линуксе.
Ну так понятно, что на ext всё с этим замечательно. Никто обратного и не утверждал.
Нет — имеется в виду что Linux совершенно спокойно создаёт симлинки на файлы, файлы отличающиеся только большими/маленькими буквами и прочее — всё в NTFS. Это заложено в файловую систему и было заложено с самого начала (всё-таки её не идиоты делали). Просто в Win32 API с этим сложности — вот и закрыты были эти возможности в Windows XP.
В NTFS той версии, что используется в XP симлинков нет.
Использую linux с его жесткими ссылками и не парюсь :)
Я ошибся в комментарии. NTFS для файлов может делать только хардлинки.
Сейчас исправлю, спасибо. Сам не мог протестировать, тотал у меня не установлен.
Отлично описание всего этого дела приведено в справке по NTFS Links.
тю. когда пользовался XP, так старый-добрый фар еще мне линки создавал.
Вы говорите о ссылках, которые *.lnk? :)
Никак нет. О ссылсках которые symlinks.
я почему-то думаю, что hardlinks. Alt-F6, да?
А, простите, всё-таки фар умеет симлинки. Ну что ж — ура.
не стоит путать ссылки [junction, symbolic link] с ярлыками [shortcuts]. в фаре испокон веку есть поддержка первой категории (Alt+F6). первый раз я это увидел еще лет 6 назад в вин2к когда нажал альт и изучил горячие клавиши фара, справка там кстати вроде тоже есть.
В первую очередь, для того, чтобы один файл можно было поместить в нескольких местах, но чтобы при этом он занимал места. Во вторую очередь, когда нужно чтобы изменения файла в одном месте вызывали изменения файла в другом месте.

В частности, я использую жесткие ссылки когда сортирую медийный контент и что-то попадает под несколько категорий. В этом случае я могу сделать сколько угодно жестких ссылок и каждую положить в нужную категорию.

Еще пример: в расшаренном файловом архиве у меня всё аккуратно разложено по папкам + есть папка «Свежак», куда я кладу ссылки на свежие дистрибутивы. Когда приходит время что-то убрать из «Свежака», то я оттуда это просто удаляю.
Наконец-то я понял, для чего Они существуют… :-)
Хотя, по-моему, «обычному» пользователю можно обойтись и без Них…
фиг знает… Смотря что понимать под «обычным пользователем».

«Обычному программисту», к примеру, благодаря системе симлинков, библиотек и прочего, под Юниксами всегда было очень легко держать в системе одновременно по пять версий одной либы.
Я еще для Дропбокса использую. Вместо того, чтобы копировать весь проект, создаю симлинк. И на рабочей машине так само.
При разработке сайтов я использую одни и те же файлы, часто (например для CakePHP) их может быть очень много. Чтобы не копировать их из проекта в проект и легко модифицировать, я использую ссылки.
Столкнулся с этими ссылками, когда для дьявольской cms Битрикс требовалось реализовать многосайтовость (сайты одной копии ссылаются символическими ссылками на ядро системы), а разработка шла из-под Windows.
Впрочем, сейчас в курсы обучения они добавили упоминание, что можно воспользоваться утилитой junction.
Хм… Какие-же это ссылки, если программы надо УЧИТЬ их понимать? В моём понимании, ссылка должна быть прозрачна для системы :-/
в том-то и дело, что они прозрачны для системы.
настолько прозрачны, что даже файловый менеджер не признаёт в них ссылок, и при удалении ссылки на папку может удалить содержимое папки

FAR нормально работает со ссылками, пользуюсь ими с начала времён
Как тогда понимать:

> И Explorer в Windows Vista начал понимать эти ссылки.

> Explorer в версиях Windows до Vista не умеет работать с ссылками

?
всё верно написано, так и понимать
Совсем-совсем не видите противоречий?
Как же так?

Программа не умеет работать со ссылками, но ссылки есть. Значит для программы они не прозрачны. Значит её надо этому учить…
Они как раз прозрачны для программы — и от этого все беды. Смотрите: вы создаёте каталог «Очень Важные Документы» где-то на диске Z: и размещаете ссылку «Временная Ссылка» на него на Рабочем Столе. Всё прозрачно, вы можете в него заходить, работать с ними, нет проблем. Поработав вы решаете удалить ссылку и забрать диск с собой. Нет проблем! Нажимаем Del, проводник смотрит «ага — удалить каталог «Временная Ссылка». Раз это каталог — надо удалить всё, что внутри». Все файлы прозрачно удаляются, в конце так же прозрачно удаляется ссылка — и вы уносите диск без всяких документов (пустой каталог остаётся, но радости с него?).
Значит надо исправить статью. Не "… не умеет работать со ссылками..", а «не умеет отличать ссылки от оригиналов».
А по хорошему файл может быть удален тогда и только тогда когда на него не остается ни одной жесткой ссылки?

Т.е. если мы похерим файл в Очень важных документах, то они останутся на рабочем столе, равно как и наоборот.

Так?
С жёсткими ссылками проблем нет — для них не нужно специальной поддержки (в Windows как и в любой нормальной операционке файл удаляется когда удаляется последняя жёсткая ссылка на него). Проблема с символьными ссылками — если вы хотите удалить символьную ссылку то нужно удалить именно её, а не всё содержимое каталога.
Нашёл противоречие!
Вот оно:
Программа не умеет работать со ссылками, но ссылки есть. Значит для программы они не прозрачны.
— я вычеркнул противоречие.
Т.е. программа видит ссылку на папку, но не понимает, что это ссылка, а думает, что это папка, т.к. как ссылка для неё прозрачна. И при попытке удаления ссылки программа может удалить содержимое папки.

Хотя чего это я повторяюсь, я это написал ещё в первом комментарии.
Не валяйте дурака. Написано русским по-белому «Проводник до Висты НЕ УМЕЕТ работать со ссылками». Либо в статье неточность, либо он их попросту не переваривает.
Нет. Пытаюсь выяснить интересующий меня вопрос. Для этого комментарии к статьям ведь придуманы в частности?
В статье всё правильно написано.
И ссылки проводник переваривает.
И ссылки прозрачны для системы.
И проводник в ХР не умеет работать со ссылками, они для него прозрачны.
В Vista, кажется, умеет, я сейчас проверить не могу — нет висты.
Перечитайте все мои комментарии ещё раз.
Больше отвечать в этой ветке не буду, какой-то чудак на букву «м» минусует подряд все мои комментарии.
В Vista умеет. Всё грамотно обрабывает и правильно показывает.
вы как раз сами себе и противоречите, какое дело программе с чем она работает, она посылает системный вызов стереть, но не сама же затирает. и тут мы видим что система затирает все, значит работать не умеет система.
Вы правда не понимаете или просто ищдеваетесь?:)
Вы сами когда-нибудь удаляли папки с файлами?
Обычно это делается через рекурсию — открываете папку и удаляете все файлы.
Если ссылка прозрачна для программы, то программа думает, что это папка и удаляет сперва её содержимое. Но я это уже писал где-то здесь, просто попробуйте перечитать комментарии.
Похоже что издевается. Сто раз уже говорили что проблемы не у системы, а у Проводника — именно он начинает удалять рекурсивно файлы увидев, что его попросили удалить «каталог» (а на самом деле ссылку на каталог). Но если думать не головой, а каким-нибудь другим местом, то…
да это тролли
шоп я ещё кому-то что-то полез объяснять…
прошло много лет.
проводник в висте и более поздних версиях (соответственно и в сервере 2008 и более поздних версиях) нормально работает с ссылками, создать их по-прежнему можно из командной строки. В проводнике, кажется, возможность создания появляется только при использовании сторонних утилит.

А для меня когда-то было открытием, что проводник не умеет то, что умеет система. Кроме проблем с символьными ссылками в старых версиях win, до сих пор есть проблема с ограничением длины полного имени файла. И шутка в том, что по сети или пройдя через символьную ссылку можно создать и изменить файл с длинным именем, но по прямому пути проводник не может с ними ничего сделать, абсолютно ничего (удалить, переименовать, копировать...).
что неясно? ДО висты не умел, В висте стал уметь.
Неясно следующее: как же он не умел, если механизм ссылок, как утверждает GoodKat, прозрачен? Тогда бы он умел сразу.
Да умеет он, умеет. Он не умеет отображать что это ссылка (он считает её обычным каталогом) и, что хуже, при попытке удалить ссылку он продолжает её считать обычным каталогом удаляет всё, что находится внутри каталога, на который ссылается ссылка. А если это не ссылка на C:\…
Вот такой ответ и нужен был мне, чтобы снять вопрос :)

В тексте статьи неточность, стало быть.
создавать не умел, использовать умел.
(правильнее сказать, для него они все были на одно лицо)
столкнулся с ними, когда надо было в висте жесткий диск как пользовательскую директорию примонтировать
кстати, в фаре это уже давно по Alt+F6 без всяких плагинов работает «искаропки»
Создай фаром ссылку на папку, а потом удали её из проводника :))
(ВНИМАНИЕ!!! НЕ ДЕЛАЙТЕ ТАК, НА ПАПКАХ С ВАЖНЫМИ ДАННЫМИ!!)
удолил!!!11 а зачем мне это надо было делать? :)
У меня удаляет содержимое реальнйо папки :(
ну у тебя видимо hard link создается
Как раз-таки, если бы был hard-link, то удаление копии не удалило бы оригинал.
junction именно так себя ведет.
странно, у меня что создание directory junction, что hard link, оригинал не удаляют
и последующее их удаление конечно же
Есть подозрение, что тут всё сильно зависит от логики работы удаляющей программы.
Угу… я же говорю удалять виндой…
А винда удаляет как: заходит в папку, удаляет все файлы к ней, и так рекурсивно, если находит папки внутри… потом грохает пустую папку…
Винда не понимает, что это линк, заходит и грохает всё внутри, а потом удаляет линк…
Именно по этому сама папка, на которую сделал линк — остается, а содержимое — пропадает…
Поэтому я удаляю ссылку с помощью Фара (в новых версиях начал понимать) или rd. Работает нормально
у фара нет новых версий :) и понимал он ссылки с начала времён :)
До 1.70 при удалении ссылок он удалял и реальный каталог, пару раз обжигался
не знал про эти глюки
да я и не удалял ссылки почти никогда, я их обычно форматировал вместе с разделом :)
а как в фаре примонтировать диск как директорию?
можно же только файлы и папки, или вы как-то монтируете папку "\"?

вы не путаете с диспетчером дисков Windows?
я не говорил, что делал это в фаре, монтировал я средствами windows, фаром я только разгребал мусор вроде «Application Data» «Local Settings» etc.
UFO just landed and posted this here
Чуть-чуть подбросил. Буду ждать статьи.
UFO just landed and posted this here
UFO just landed and posted this here
название поста немного не верно имхо, «ссылки в NTFS» было бы вернее ;)
Проверить не могу, но, кажется, Vista умеет делать ссылки на vfat. А может я путаю с символическими ссылками на файлы.
Лучше и понятнее описания, чем в FAR, не встречал, приведу целиком, может быть кому-нибудь это поможет разобраться, что к чему:
Жесткие и символические связи

На разделах NTFS также можно создавать жесткие (HardLink) связи для файлов и символические (SymLink) для папок с помощью команды Alt-F6.

Жесткие связи применяются для файлов. Символические связи — для папок и дисков.

Жесткие связи

Жесткая связь (HardLink) — это просто еще одна запись в папке для данного файла.

Когда создается жесткая связь, сам файл не копируется физически, а только появляется под еще одним именем или в еще одном месте, а его старые имя и местонахождение остаются нетронутыми. С этого момента жесткая связь неотличима от первоначальной записи в папке. Единственное отличие — то, что для жесткой связи не создается короткое имя файла, поэтому из программ ДОС она не видна.

Когда меняется размер или дата файла, все соответствующие записи в папках обновляются автоматически. При удалении файла он не удаляется физически до тех пор, пока все жесткие связи, указывающие на него, не будут удалены. Порядок их удаления значения не имеет. При удалении жесткой связи в корзину количество связей у файла сохраняется.

FAR умеет создавать жесткие связи, отображать количество жестких связей для каждого файла в отдельной колонке (по умолчанию это последняя колонка в 9-м режиме панелей), а также сортировать файлы по количеству жестких связей.

Жесткие связи поддерживаются в NTFS, начиная с NT 4.0. Создавать жесткие связи можно только на том же диске, на котором расположен исходный файл.

Символические связи

NTFS начиная с версии 5.0 (Windows 2000/XP) поддерживает символические связи (SymLink). Символические связи папок в Windows 2000/XP известны как «directory junctions» — технология, позволяющая отображать любые локальные папки на любые другие локальные папки. Например, если папка D:\SYMLINK указывает на C:\WINNT\SYSTEM32 в качестве своей цели, то программа, обращающаяся к D:\SYMLINK\DRIVERS, будет на самом деле обращаться к C:\WINNT\SYSTEM32\DRIVERS.

FAR умеет создавать символические связи только на локальных дисках, файловая система которых поддерживает эту возможность (Windows 2000/XP/NTFS 5.0). В отличие от жестких связей, символические связи не обязательно должны указывать на тот же диск.

Напрямую делать символические связи на папки CD-ROM нельзя, но можно это ограничение обойти, смонтировав CD-ROM диск на папку NTFS-раздела.
Описание плохое, потому что старое. В Vista и более поздних версиях Windows есть две разных сущности: directory junctions и symbolic link для директорий
Не хочу никого обидеть, никого задеть или намекнуть на чьи-то окна. :)

… но это какое-то изобретение велосипеда! Еще в восьмидесятые на людой серьезной ФС были hardlinks и symlinks. Двадцать пять лет спустя Виста стала, наконец, полноценно их делать и читать на уникальной фирменной ФМ NTFS… Ого-го, какая силища-то! :)
UFO just landed and posted this here
Зачем забивать мозги домохозяек ненужными и даже опасными знаниями?
А кому надо, те всегда знали :)
UFO just landed and posted this here
UFO just landed and posted this here
Путает. Ещё бы кто объяснил зачем у Microsoft одна сущность разбита на три. Всё не как у людей — то fork и exec объединят, то symlink'и разделят на три сущности. Ну в первом случае я хоть понимаю почему так сделано, но зачем иметь отдельно junction и symlinkd ???
NTFS вообще хорошая ФС, причём ещё со времён NT 4.0.
Окромя линков интересна система потоков. У Руссиновича много хороших статей по NTFS. Ну и в MSDN документации много чего полезного есть.
тема старая… раньше место добавляли так с других разделов,
а вообще смотрите sysinternals.com пользуясь виндовс я обожал это место.
Господа Виста-имущие, подскажите чем обусловлено разделение последнего пункта «symbolik link» на два. И есть ли тому серьёзное обоснование.

Насколько мне удалось узнать, для пользователя Junction Point и Symbolic Link абсолютно равнозначны. Различаются лишь механизмы их реализации в Windows.
В смысле, Junction Point и Symbolic Link на директорию.
Немного не в тему, про обычные ярлыки (те что .lnk)…

Если в висте создавать ярлык на папку drag’n’drop-ом через [Alt] – получится обычный ярлык,
а если через [Ctrl]+[Shift] – то создается системный каталог, внутри которого desktop.ini с CLSID и target.lnk

Через эксплорер их можно отличить только по поведению, второй во многих случаях ведет себя как символическая ссылка на каталог: в адресной строке и в дереве каталогов проводника раскрывает содержимое папки относительно текущего пути. Такие «ссылки» использовались еще в XP во многих системных каталогах, но хоткей на их быстрое создание добавили, кажется, только с висты. Кто знает как они правильно называются?
Еще есть Link Shell Extension (x86 и x64): schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
Там же есть подробное описание работы на английском.
Комменты до конца не дочитал, но налицо небольшое непонимание.

hard link — фича файловой системы.
symlink — фича ядра операционной системы.
А почему тогда Junction Points (которые вроде бы симлинки) не поддерживаются на FAT?
и почему они сохраняются при смене ОС?
тут (http://otvety.google.ru/otvety/thread?tid=346ab12899a32451) сказано, что при обращении через шару junction раскрываются сервером, а simlink-и — клиентом.

Я на XP попробовал одно: в расшаренной папке Upload сделал junction на нераcшаренную c:\windows — и через шару все тамошние файлы стали видны, кроме тех папок, которым NTFS-ные права доступа другим юзерам не дают.
А еще в системах семейства Windows NT есть малоизвестная функция, которая позволяет скрывать какую-либо информацию. Называется она альтернативные потоки данных NTFS. Они позволяют добавить к любому файлу или папке информацию, которая будет не видна при обычном просмотре. Это обусловлено тем, что файл NTFS состоит из потоков данных и в обычных условиях вы видите только один, основной поток данных. При этом альтернативный поток невидим, хотя в нем может содержаться информация. В тоже время операционная система никак не оповещает пользователя, что в файле есть альтернативный поток. Некоторые программы используют эту возможность для хранения служебной информации, касающейся этого файла, а хакеры организовывают атаки.

echo hello world > example.txt:hwstream

Таким образом записывается текстовая информация. Для того, чтобы записать другой тип данных, нужно использовать команду type:

type calc.exe > example.txt:calc

После выполнения данной команды, в файле example.txt записан калькулятор, который можно запустить так:

start .\example.txt:calc
сделал ссылку командой mklink /d /h /j «d:\dropbox» «D:\FileStorage\»
а теперь хочу ее удалить, и не пойму что для этого нужно сделать, ключей для удаления нет, может есть какая-то команда?
спасибо, действительно rmdir удаляет только ссылку не затрагивая исходные файлы и папки, во всяком случае если не указывать никаких дополнительных ключей. я удалил свою ссылку так: rmdir «d:\dropbox» и при этом папка «D:\FileStorage\» осталась на месте, а папка «d:\dropbox» «пропала».
UFO just landed and posted this here
Sign up to leave a comment.

Articles