PDA

Показать полную графическую версию : [решено] По поводу стандартных симлинков и кастомных


mega32
02-08-2017, 07:28
В корне C: есть симлинк "Documents and Settings" -> "Users"
В тотале проверяю размер самой ссылки "Documents and Settings" - не пишет размер, оставляет надпись ссылка. Все ок.
В виртуалке удаляю эту ссылку, создаю её снова
c:\>mklink /d "documents and settings" "users"
символическая ссылка создана для documents and settings <<===>> users
Тотал начинает писать размер ссылки, т.е. реальной папки c:\Users и при определении общего занятого места получается он их складывает, папка users считается дважды.
Дальше ситуация в хостовой винде.
Та же проблема с симлинками внутри папки "Users" - "All users" & "Все пользователи" и папки C:\ProgramData". Тотал считает из-за двух кастомных симлинков размер папки ProgramData три раза.
Так уж вышло, что при попытке перенести профили пользователей на другой диск симлинки все кастомные от чего тотал коммандер насчитывает размер занятого места больше, чем вмещает сам твердотельник. При создании ссылки изменение ключа /d на /j ничего не меняет.
Это проблема тотала или можно с этими симлинками что-то сделать, чтобы они как и раньше писали нулевой размер?

Возможно дело с правами безопасности, но я не нашел различий в этих настройках в чистой винде в виртуалке и в хостовой.

UPD.
Нет все-же дело с правами безопасности конкретно для симлинка (с выбранным пунктом только для этой папки). Поставил такие-же права конкретно для симлинка, как у дефолтных симлинков и проблема решилась.

Iska
02-08-2017, 08:19
В корне C: есть симлинк "Documents and Settings" -> "Users" »
Нет там такого симлинка. Есть связь каталогов (Junction).

В тотале проверяю размер самой ссылки "Documents and Settings" - не пишет размер, оставляет надпись ссылка. Все ок. »
mega32, не окей. Вопрос к Total'у.

В виртуалке удаляю эту ссылку, создаю её снова
mklink /d "documents and settings" "users" »
Вы не «создаёте её снова». Совсем. В оригинале а) не символическая ссылка, а связь каталогов, б) абсолютный путь, а не относительный и в) другое имя — не «documents and settings», а «Documents and Settings».

Та же проблема с симлинками внутри папки "Users" - "All users" & "Все пользователи" и папки C:\ProgramData". Тотал считает из-за двух кастомных симлинков размер папки ProgramData три раза. »
Вы уверены ;)? Там внутри ещё есть связь каталогов на ту же C:\ProgramData. Ах, да, у Вас же TC не считает связь за каталог.

Так уж вышло, что при попытке перенести профили пользователей на другой диск симлинки все кастомные от чего тотал коммандер насчитывает размер занятого места больше, чем вмещает сам твердотельник. »
И правильно делает.

При создании ссылки изменение ключа /d на /j ничего не меняет. »
Всё меняет. Это две разных точки повторной обработки, каждая со своей спецификой. И, насколько я вижу, Total Commander так и продолжает одинаково помечать их в списке, как <LNK> в поле Size, несмотря на то, что даже dir их различает.


Задайтесь вопросом — что должно происходить при копировании с одного физического диска на другой:
а) жёсткой ссылки (hard link);
б) связи каталогов (junction);
в) символической ссылки (symbolic link)?

UPD.
Нет все-же дело с правами безопасности конкретно для симлинка (с выбранным пунктом только для этой папки). Поставил такие-же права конкретно для симлинка, как у дефолтных симлинков и проблема решилась. »
Отчего-то у Far Manager'а не возникает подобных проблем, и не требуется трогать какие-либо права и наследование.

mega32
02-08-2017, 16:30
mega32, не окей. Вопрос к Total'у. »
Тотал и экплорер не пишет размер ярлыка или симлинка или связи каталогов, что почти одно и то-же. Просто по логике вещей не должно и не пишет. Иначе любые проги, как и говорилось в посте будут писать занимаемое место больше, чем вмещает сам диск. А вещь этого нет в стандартной вкладке диск или оснастке diskmgmt.msc
а) не символическая ссылка, а связь каталогов »
Вообще без разницы. По факту работают одинаково.
б) абсолютный путь, а не относительный »
Не важно, я нахожусь в C:\, папка и ссылка находятся в C:\, поэтому могу писать не абсолютный путь, а относительный и это представьте работает так-же, как и абсолютные пути.
в) другое имя — не «documents and settings», а «Documents and Settings». »
Заглавные или строчные - винде пофиг, имя по факту одинаковое.
И правильно делает. »
Что правильного в баге, когда занимаемый размер в 3 раза больше, чем это на самом деле? Простая логика:
-есть каталог на десяток гигабайт на диске D:
-есть ссылка на этот каталог на диске C:
Файлы занимают место на диске D:, а не C:., соответственно и ссылка не должна занимать эти гигабайты.
Всё меняет. Это две разных точки повторной обработки, каждая со своей спецификой. И, насколько я вижу, Total Commander так и продолжает одинаково помечать их в списке, как <LNK> в поле Size, несмотря на то, что даже dir их различает. »
Механизм работы здесь не важен - в итоге результат одинаковый

Iska
02-08-2017, 17:09
Просто по логике вещей не должно и не пишет. »
Моё мнение — должно. По той же логике.

Иначе любые проги, как и говорилось в посте будут писать занимаемое место больше, чем вмещает сам диск. »
Жёсткие ссылки, связи каталогов, символические ссылки, сжатые файлы, разреженные файлы, дедуплицированные файлы и т.д. Там много чего есть, что влияет.

Суммарный размер файлов — это одно. Занимаемое ими место на диске — другое. Сколько места будет занято после копирования (особенно на другой раздел или диск) — третье. И все эти размеры разные.

Не используйте «любые проги» для оценки. Используйте специально предназначенные для того инструменты.

А вещь этого нет в стандартной вкладке диск или оснастке diskmgmt.msc »
Зато там есть другое и более нужное — размер свободного места.

Вообще без разницы. По факту работают одинаково. »
Разница очень существенная. Работают по разному.

Не важно, я нахожусь в C:\, папка и ссылка находятся в C:\, поэтому могу писать не абсолютный путь, а относительный и это представьте работает так-же, как и абсолютные пути. »
Представьте, что это совершенно не так. Связь каталогов не может указывать на относительный путь. Вы невнимательно прочитали то, что я написал: то, что Вы создавали, не являлось свзяью каталогов (как было в оригинале), Вы создавали символическую ссылку (чего в оригинале не было).

Заглавные или строчные - винде пофиг, имя по факту одинаковое. »
Эти имена будут разными. Особенно это заметно при использовании символов за пределами ASCII-таблицы. Операционная система действительно позволяет работать с объектами файловой системы, не учитывая регистр символов.

Что правильного в баге, когда занимаемый размер в 3 раза больше, чем это на самом деле? »
Это Вы решили, то это именно занимаемый размер. Но это не так.

Простая логика… »
Повторю:
Задайтесь вопросом — что должно происходить при копировании с одного физического диска на другой:
а) жёсткой ссылки (hard link);
б) связи каталогов (junction);
в) символической ссылки (symbolic link)? »
Задайте себе эти вопросы. Затем попробуйте ответить на них.

Файлы занимают место на диске D:, а не C:., соответственно и ссылка не должна занимать эти гигабайты. »
Для оценки места, занимаемого файлами, используйте специально предназначенные для того инструменты. Не используйте для этого Проводник. Он честно показывает суммарный объём файлов, доступных по рекурсивному поиску в дереве каталогов — то место, сколько займут все эти файлы после копирования.

Механизм работы здесь не важен - в итоге результат одинаковый »
Результат может быть одинаковым, но механизм работы существенно разнится.

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


Дабы не продолжать толочь воду в ступе — что именно Вы хотите узнать:

Суммарный размер файлов?
Занимаемое файлами место на диске?
Сколько места будет занято после копирования?

mwz
02-08-2017, 17:41
Нет там такого симлинка. Есть связь каталогов (Junction). »

Угу.

http://mwz-ru.homeserver.com/tests/appdatajunk1.gif

Однако когда создаю дубликат с именем Roaming, что симлинком, что по связи Junction — TotalCmd начинает подсчитывать место.

mega32

Связи проявлены и дубликаты создавались утилитой Link Shell Extention.

После чего начинаем разбираться — и видим, что на исходную связь и на дубликат-самострок права пользователей одинаковы, кроме: у "правильной" папки есть ещё один пользователь: "Все", с особыми правами. Ну дальше уже копать не стал: уверен что именно в тех правах и лежит разница, поскольку чудес не бывает.


PS

mega32
Но вопрос хороший, поскольку не обращал внимания, а может пригодиться — и проверил: конкретно для пользователя "Все" установлен единственный элемент запрета, "Содержание папки / Чтение данных", причём только на эту папку, без вложенных объектов. И после установки такого запрета на связь-самострок всё приходит в норму.

И только после этого заметил, что вы решили вопрос тем же путём.

PPS

Ну а разницу между симлинками и точкой соединения Junction вы почувствуете при сетевом доступе к таким псевдопапкам. Я с этим уже столкнулся — и пришлось переделывать свои папки-симлинки, к которым мне нужен был сетевой доступ, на точки связи.

mega32
02-08-2017, 18:56
Дабы не продолжать толочь воду в ступе — что именно Вы хотите узнать: »
Тема отмечена решенной, еще тогда, когда вы и прочитать её не успели. Когда здесь не было не одного поста, кроме моего. Соответственно льёте воду тут только вы, докапываясь до незначительных вещей. Я узнал всё, что хотел. Баг с обсчитыванием размера ссылок лечится, как и написал mvz установкой запрета только для ссылки на чтение папки для группы "Все". Тема исчерпана и в вашем флуде не нуждается.

Iska
03-08-2017, 04:00
mega32, флаг в руки.

Тема отмечена решенной, еще тогда, когда вы и прочитать её не успели. »
Вы не правы.

Соответственно льёте воду тут только вы, докапываясь до незначительных вещей. »
Когда дозреете до понимания сути этих «незначительных вещей» — приходите и задирайте нос сколь Вам будет угодно.

Тема исчерпана и в вашем флуде не нуждается. »
Жалуйтесь в администрацию.




© OSzone.net 2001-2012