![]() |
Немного о ссылках NTFS
Привет, мир!
Давече озабитился вопросом использования команды mklink для создания NTFS-ссылок. Изначально, я хотел почистить папку %windir%\winsxs, вбил запрос в яндекс, на первой же странице наткнулся на статью по использованию скрипта WinsxsLite v1.88. Благо, с первой страницы перешел в этот бложик: https://www.outsidethebox.ms/15444/, после прочтения которого передумал юзать скрипт и оставил папку в покое. Насколько я понял, папка winsxs является хранилищем жестких ссылок, и удаление файлов из нее (этих самых ссылок) приведет к краху отдельных функций ОС или системы в целом. Но сейчас не об этом. Я очень консервативен, после того как пол года назад мой hdd с XP приказал долго жить, ремап викторией не помог и на новый хард я решил все же поставить Win7 - наконец, пора! Скачал, установил, 2 месяца поминал дядю Билла в процессе привыкания (и сейчас этим грешу). Многое в GUI не устраивает (а Win8 в ночных кошмарах частый гость), и одна из таких вещей - переименованные папки в корне системного раздела (Documents and Settings - Users, к примеру), перенос %Temp% из %systemdrive%\Temp\ в %localappdata%\Temp\. Длинное вышло вступление, однако. Теперь к делу. В предустановленной ОС на диске С присутствуют NTFS ссылки на переименованые папки - All Users, Application Data, Главное меню и др. Сделано это, по моим умозаключениям, для обеспечения совместимости старого Xp-шного софта, где прописаны абсолютные пути, с Win7. Правда, зачем было вообще переносить и переименовывать папки и получить себе Как видите, созданная мной ссылка - это папка Temp, но путь к ней прописан так, будто бы она физически расположена в корне диска С (левая панель), в то время как должна быть такой, как на правой. А еще появились непонятные замки на иконках. При этом предустановленные микрософтские ссылки работают как надо: Собственно, мне нужно что бы и созданные мною ссылки работали так же. С этой проблемой обращаюсь к вам. Кроме того, заметил что если папка, на которую создается ссылка, имеет в названии пробелы (название из двух слов), получаем error. Кто знает как обойти без переименования с _? Моя ОС: Windows 7 Ultimate x86 SP1. Запускал cmd от имени админа (при этом это единственная учетка), пробовал создавать символические ссылки и соединения, результат выше. Надеюсь на помощь! P.S. Если Вам кажется, что я одержим бредовой идеей, трачу свое (и Ваше) время впустую, "Просто используй все как есть", вспомните, как Вы работали за чужой машиной с чужим ПО и настройками, и как приятно было вернуться к себе домой. У меня такое чувство постоянно, пусть и не столь сильное. Работать за своим же ПК не комфортно где-то на границе сознания, и виной тому совокупность мелочей, одна из которых описана в этой теме. Кроме того, у меня всегда запущен TC, и левая панель - диск С (система), правая - D (все файлы и большинство программ). Поскольку чаще я юзаю D, левая панель большую часть времени отображает корень С, и Win7-модель постоянно, каждый день и каждый час мозолит глаза. Бесит! Спасибо, что осилили гору текста. |
Цитата:
Цитата:
Что же касается сути задачи, то расположение %temp% меняется в переменных среды (вводить в поиск меню пуск), а переименовывать Users в Documents and Settings - Цитата:
|
Спасибо, посмотрю
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Видимо, у меня в XP была переопределена переменная %TEMP%, а я и не знал. Насчет кавычек запомню. Но как же сделать так, что бы в строке адреса был прописан, собственно, адрес на который ссылается соединение или ссылка, а не название?
|
Цитата:
|
Допустим, создал я ссылку на папку %НазваниеПапки%. Захожу через Enter в эту папку по созданной ссылке, но в строке адреса вижу не %НазваниеПапки% а %НазваниеСсылки%. При этом ссылка сработала и отображено содержимое требуемой папки. В первом посте есть скрин. Соединения видут себя так же. У предустановлленных системных ссылок на C:\ такого бага нет. Это весьма странно...
|
Цитата:
Цитата:
|
В корне диска С лежит ссылка Documents and Settings, установленная Microsoft (ее и подобные ссылки на С я имел ввиду, говоря "предустановленная"). Так вот, тыкнув не нее, попадем в C:\Users\, а не в C:\ Documents and Settings. А вот создаем пользовательскую ссылку на C:\Users\ с названием Documents, тыкнув на нее попадем в C:\Documents\ , а не в C:\Users\.
Во втором случае разве не должо быть C:\Users\, а не C:\Documents\? Я неправильно понимаю механизм работы ссылок, или так и должно быть? |
И если уж на то пошло, известно что ссылки не занимают место на винчестере вообще, в отличие от того же ярлыка. Но вся соль в том, что OS об этом не знает и считает, что ссылки весят столько же, сколько и оригиналы, хотя в действительности это не так. Та же папка winsxs на самом деле не весит и одного гб. И вот однажды, предположим, место на харде кончися, хотя физически оно еще будет но OS будет считатьпосчитает что место занято под файлы (ссылки). Внимание, вопрос! Имеет ли конечное практическое значение факт, что ссылки не имеют веса, если OS его считает? Какая разница, полупуст ли хард если на него не позволит писать система? Парадокс?
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Так... Кажется, я допер. Стандартные junctions блокируются виндоуским эксплорером, но почему-то открываются сторонними файловыми менеджерами типо TC (что и ввело меня в заблуждение). Можно добиться сходного эффекта у пользовательских соединений, установив запрет на чтение группе "Пользователи". Из этого можно сделать вывод, что стандартные ссылки и соединения не предназначены для того что бы туда ходили юзеры, но как юзеры, так и программы могут обращаться к этим объектам косвенно (собственно, для чего они и были созданы). Так же из этого следует что поведение ссылок и соединений, когда в строке адреса указывается путь именно ссылки\соединения является абсолюно нормальным, как и указал Iska.
Цитата:
|
Да, разрешения на объекты «Users» и «Documents and Settings» несколько различаются. Но отказ во входе — полагаю, вызван именно файловым менеджером, т.е. — в Проводником.
Кстати, у меня, под Far Manager'ом, нет никакой разницы, «ходить» по точкам соединения, созданным системой (aka «Documents and Settings») или пользователем — и там, и там отображается именно точка соединения (причём, неважно какая именно — Junction или Symlink). |
Но я по-прежнему не понимаю, как рассчитывается место, "занятое" под ссылки. Предположим, я создал ссылок на файлы размером ~5 ГБ, + winsxs весит столько же. Так же я имею диск С, забирый на 50 ГБ из 60, итого OS подскажет, что он забит полностью. Что будет, если я скопирую пару-тройку фильмов на "заполненный" раздел?
Iska, у меня Тотал древний, 7.02, может в более свежих версиях это пофикшено уже. В итоге я принял волевое решение следовать стандартам проводника, дабы не разочароваться, обновив TC (в обозримом будущем). |
Цитата:
Цитата:
GetDiskFreeSpace function (Windows) GetDiskFreeSpaceEx function (Windows) |
Узнал много нового, спасибо!
|
Можете ещё здесь почитать, например (не помню, были ли эти ссылки в оригинальной теме):и по связанным с ними ссылками в этих статьях.
|
Antrodamikus, и ещё в копилку: утилита Link Shell Extension (раздельная для 32- и 64-битных версий).
Кроме того, что позволяет создавать специальные NTFS-ссылки одним движением мышки, ещё и "проявляет" все точки связи зрительно, добавляя оверлеи (цепочка – junction, красная стрелка – hardlink, зелёная – symlink) на значки файлов и папок, имеющих такие связи. Также позволяет копировать папки, содержащие связи, с сохранением соответствующих связей в копии структуры – но оторванных от связей исходной папки (т.е. связи в такой копии указывают не на старое, а на скопированное положение связанных папок и файлов). |
Время: 21:31. |
Время: 21:31.
© OSzone.net 2001-