Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Немного о ссылках NTFS (http://forum.oszone.net/showthread.php?t=300204)

Antrodamikus 23-05-2015 17:40 2510616

Немного о ссылках 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. Правда, зачем было вообще переносить и переименовывать папки и получить себе геморрой конфликт с путями, непонятно. В итоге Microsoft родила данный костыль. После прочтения вышеозначенной статьи и близкого ознакомления с ссылками, решил обратить процесс тем же методом. Править %temp% и воротить систему чревато, и я решил поставить символические ссылки на папки, приведя их названия к xp-шным, а самим папкам назначить атрибут "скрытый". В итоге система осталась бы не ковыряной и целой, в то время как я бы получил что хотел. И овцы целы, и волки сыты. Но не тут-то было.

Должно было получиться это:


А вышло это:



Как видите, созданная мной ссылка - это папка Temp, но путь к ней прописан так, будто бы она физически расположена в корне диска С (левая панель), в то время как должна быть такой, как на правой. А еще появились непонятные замки на иконках.

При этом предустановленные микрософтские ссылки работают как надо:
Скрытый текст


Собственно, мне нужно что бы и созданные мною ссылки работали так же. С этой проблемой обращаюсь к вам.

Кроме того, заметил что если папка, на которую создается ссылка, имеет в названии пробелы (название из двух слов), получаем error. Кто знает как обойти без переименования с _?
Скрытый текст


Моя ОС: Windows 7 Ultimate x86 SP1. Запускал cmd от имени админа (при этом это единственная учетка), пробовал создавать символические ссылки и соединения, результат выше. Надеюсь на помощь!

P.S. Если Вам кажется, что я одержим бредовой идеей, трачу свое (и Ваше) время впустую, "Просто используй все как есть", вспомните, как Вы работали за чужой машиной с чужим ПО и настройками, и как приятно было вернуться к себе домой. У меня такое чувство постоянно, пусть и не столь сильное. Работать за своим же ПК не комфортно где-то на границе сознания, и виной тому совокупность мелочей, одна из которых описана в этой теме. Кроме того, у меня всегда запущен TC, и левая панель - диск С (система), правая - D (все файлы и большинство программ). Поскольку чаще я юзаю D, левая панель большую часть времени отображает корень С, и Win7-модель постоянно, каждый день и каждый час мозолит глаза. Бесит! Спасибо, что осилили гору текста.

Vadikan 23-05-2015 17:57 2510621

Цитата:

Цитата Antrodamikus
Многое в GUI не устраивает (а Win8 в ночных кошмарах частый гость), и одна из таких вещей - переименованные папки в корне системного раздела (Documents and Settings - Users, к примеру), перенос %Temp% из %systemdrive%\Temp\ в %localappdata%\Temp\. »

Этого в XP не было, временные файлы пользователя хранились в %USERPROFILE%\Local Settings\Temp
Цитата:

Цитата Antrodamikus
правда, зачем было вообще переносить и переименовывать папки и получить себе геморрой конфликт с путями, непонятно. В итоге Microsoft родила данный костыль. »

Ликбез тут Как получить доступ к папке* “Documents and Settings” в корне диска и похожим папкам в профиле.

Что же касается сути задачи, то расположение %temp% меняется в переменных среды (вводить в поиск меню пуск), а переименовывать Users в Documents and Settings -
Цитата:

Цитата Antrodamikus
одержим бредовой идеей »

См. также [решено] Соединения, символические и жесткие ссылки

Antrodamikus 23-05-2015 18:09 2510623

Спасибо, посмотрю

Iska 23-05-2015 19:43 2510643

Цитата:

Цитата Antrodamikus
Насколько я понял, папка winsxs является хранилищем жестких ссылок, и удаление файлов из нее (этих самых ссылок) приведет к краху отдельных функций ОС или системы в целом. »

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

Цитата:

Цитата Antrodamikus
переименованные папки в корне системного раздела (Documents and Settings - Users, к примеру) »

Решение спорное, но остались ссылки, аналогичные старым папкам («Documents and Settings» ссылается на «Users», «к примеру» ;)).

Цитата:

Цитата Antrodamikus
перенос %Temp% из %systemdrive%\Temp\ в %localappdata%\Temp\. »

Это неверное утверждение. В NT 5.x переменная окружения TEMP, ни пользовательская, ни системная, на %systemdrive%\Temp никогда не ссылалась.

Цитата:

Цитата Antrodamikus
Кроме того, заметил что если папка, на которую создается ссылка, имеет в названии пробелы (название из двух слов), получаем error. Кто знает как обойти без переименования с _? »

Обрамляйте путь\имя папки кавычками.

Цитата:

Цитата Antrodamikus
После прочтения вышеозначенной статьи и близкого ознакомления с ссылками, решил обратить процесс тем же методом. »

Не делайте этого.

Цитата:

Цитата Antrodamikus
P.S. Если Вам кажется, что я одержим бредовой идеей, »

Угу. Кажется.

Antrodamikus 23-05-2015 20:15 2510655

Видимо, у меня в XP была переопределена переменная %TEMP%, а я и не знал. Насчет кавычек запомню. Но как же сделать так, что бы в строке адреса был прописан, собственно, адрес на который ссылается соединение или ссылка, а не название?

Iska 23-05-2015 20:20 2510658

Цитата:

Цитата Antrodamikus
Но как же сделать так, что бы в строке адреса был прописан, собственно, адрес на который ссылается соединение или ссылка, а не название? »

Поясните примером.

Antrodamikus 23-05-2015 20:26 2510663

Допустим, создал я ссылку на папку %НазваниеПапки%. Захожу через Enter в эту папку по созданной ссылке, но в строке адреса вижу не %НазваниеПапки% а %НазваниеСсылки%. При этом ссылка сработала и отображено содержимое требуемой папки. В первом посте есть скрин. Соединения видут себя так же. У предустановлленных системных ссылок на C:\ такого бага нет. Это весьма странно...

Iska 23-05-2015 20:39 2510670

Цитата:

Цитата Antrodamikus
Допустим, создал я ссылку на папку %НазваниеПапки%. Захожу через Enter в эту папку по созданной ссылке, но в строке адреса вижу не %НазваниеПапки% а %НазваниеСсылки%. »

Именно так. И более того — именно так и должно быть.

Цитата:

Цитата Antrodamikus
У предустановлленных системных ссылок на C:\ такого бага нет. »

Опять ничего непонятно. У каких «предустановленных системных ссылок на C:\»? Скриншотами поясните, что ли.

Antrodamikus 23-05-2015 21:02 2510678

В корне диска С лежит ссылка Documents and Settings, установленная Microsoft (ее и подобные ссылки на С я имел ввиду, говоря "предустановленная"). Так вот, тыкнув не нее, попадем в C:\Users\, а не в C:\ Documents and Settings. А вот создаем пользовательскую ссылку на C:\Users\ с названием Documents, тыкнув на нее попадем в C:\Documents\ , а не в C:\Users\.

Ссылка Microsoft


Моя ссылка


Во втором случае разве не должо быть C:\Users\, а не C:\Documents\?
Я неправильно понимаю механизм работы ссылок, или так и должно быть?

Antrodamikus 23-05-2015 21:22 2510683

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

Iska 23-05-2015 21:56 2510698

Цитата:

Цитата Antrodamikus
Так вот, тыкнув не нее, попадем в C:\Users\, а не в C:\ Documents and Settings. »

Обратите внимание, что «тыкнув» в стороннем файловом менеджере. «Тыкнув» на «Documents and Settings» в Проводнике — получите отлуп в виде сообщения.

Цитата:

Цитата Antrodamikus
А вот создаем пользовательскую ссылку на C:\Users\ с названием Documents, »

Опишите/покажите процесс создания Вами ссылки «C:\Documents».

Цитата:

Цитата Antrodamikus
ссылки не занимают место на винчестере вообще »

Это не совсем так. Они занимают запись в MSFT.

Цитата:

Цитата Antrodamikus
И вот однажды, предположим, место на харде кончися, хотя физически оно еще будет но OS будет считатьпосчитает что место занято под файлы (ссылки). »

Поверьте, ОС «не посчитает». Подсчёт свободного места идёт иначе, нежели Вы предполагаете.

Antrodamikus 23-05-2015 22:09 2510703

Так... Кажется, я допер. Стандартные junctions блокируются виндоуским эксплорером, но почему-то открываются сторонними файловыми менеджерами типо TC (что и ввело меня в заблуждение). Можно добиться сходного эффекта у пользовательских соединений, установив запрет на чтение группе "Пользователи". Из этого можно сделать вывод, что стандартные ссылки и соединения не предназначены для того что бы туда ходили юзеры, но как юзеры, так и программы могут обращаться к этим объектам косвенно (собственно, для чего они и были созданы). Так же из этого следует что поведение ссылок и соединений, когда в строке адреса указывается путь именно ссылки\соединения является абсолюно нормальным, как и указал Iska.

Цитата:

Цитата Iska
Опишите/покажите процесс создания Вами ссылки «C:\Documents». »

Да никаких премудростей: mklink /j c:\Documents c:\Users (или /d для ссылки)

Iska 23-05-2015 22:20 2510705

Да, разрешения на объекты «Users» и «Documents and Settings» несколько различаются. Но отказ во входе — полагаю, вызван именно файловым менеджером, т.е. — в Проводником.

Кстати, у меня, под Far Manager'ом, нет никакой разницы, «ходить» по точкам соединения, созданным системой (aka «Documents and Settings») или пользователем — и там, и там отображается именно точка соединения (причём, неважно какая именно — Junction или Symlink).

Antrodamikus 23-05-2015 22:21 2510706

Но я по-прежнему не понимаю, как рассчитывается место, "занятое" под ссылки. Предположим, я создал ссылок на файлы размером ~5 ГБ, + winsxs весит столько же. Так же я имею диск С, забирый на 50 ГБ из 60, итого OS подскажет, что он забит полностью. Что будет, если я скопирую пару-тройку фильмов на "заполненный" раздел?

Iska, у меня Тотал древний, 7.02, может в более свежих версиях это пофикшено уже.

В итоге я принял волевое решение следовать стандартам проводника, дабы не разочароваться, обновив TC (в обозримом будущем).

Iska 23-05-2015 23:05 2510719

Цитата:

Цитата Antrodamikus
Но я по-прежнему не понимаю, как рассчитывается место, "занятое" под ссылки. »

Оно должно рассчитываться как будто это не ссылки, а обычные папки и файлы. Это необходимо, например, для оценки объема при копировании содержимого Проводником.

Цитата:

Цитата Antrodamikus
Так же я имею диск С, забирый на 50 ГБ из 60, итого OS подскажет, что он забит полностью. »

ОС может показать, что размер всех выделенных папок и файлов на диске больше, чем объём диска ;). А вот если Вы посмотрите на свойства диска — увидите реальную оценку. Я уже писал, что ОС иначе определяет размер доступного пространства на томе:
GetDiskFreeSpace function (Windows)
GetDiskFreeSpaceEx function (Windows)

Antrodamikus 23-05-2015 23:42 2510734

Узнал много нового, спасибо!

Iska 24-05-2015 00:01 2510741

Можете ещё здесь почитать, например (не помню, были ли эти ссылки в оригинальной теме):и по связанным с ними ссылками в этих статьях.

mwz 24-05-2015 12:56 2510832

Antrodamikus, и ещё в копилку: утилита Link Shell Extension (раздельная для 32- и 64-битных версий).

Кроме того, что позволяет создавать специальные NTFS-ссылки одним движением мышки, ещё и "проявляет" все точки связи зрительно, добавляя оверлеи (цепочка – junction, красная стрелка – hardlink, зелёная – symlink) на значки файлов и папок, имеющих такие связи.

Также позволяет копировать папки, содержащие связи, с сохранением соответствующих связей в копии структуры – но оторванных от связей исходной папки (т.е. связи в такой копии указывают не на старое, а на скопированное положение связанных папок и файлов).


Время: 21:31.

Время: 21:31.
© OSzone.net 2001-