Вы должны войти, чтобы создавать сообщения и темы.

Можно ли сделать символические ссылки для папки?

Страница 1 из 2►

Друзья, всем привет!

Не так давно, пересмотрев видео Хачатура в пятый раз, наконец-то разобрался с пониманием того, что такое символическая ссылка. Сразу же обрадовался, так как думал, что мою задачу такая полезная штука решит идеально. Но, получается, что эти ссылки работают только для файлов? Потому что для папок у меня сделать символическую ссылку не получается – она копируется полностью.

Задача у меня вот в чем:

Есть около 400 игр на RenPy, которые надо протестировать. Абсолютно все они имеют папку lib, где лежат библиотеки с пайтоном. Какие-то различаются: есть 2.7 версии, есть 3.9 – в зависимости от того, на какой из них была создана игра. Но это неважно – если нужная библиотека присутствует, она легко подхватывается, и игра запускается. И дело в том, что эти библиотеки весят крайне много. Для 2-3 проектов – это ерунда, но когда их больше 400 – это около 5-10 гигабайт лишнего мусора.

Я решил создать универсальную папку lib, где будут все версии с необходимыми библиотеками. Казалось бы, идеальное решение, если работать по принципу символической ссылки. Саму библиотеку держать отдельно, а во все папки с играми на Renpy кинуть символическую ссылку – lib. Таким образом я сэкономлю кучу свободного места.

Но, получается, я зря обрадовался? Для папок символическая ссылка невозможна?

Через твикер добавил себе пункт в контекстное меню. Для обычных файлов разного размера, как и показывал Хачатур, все работает. Но для папок нет. Папка копируется полностью, как будто просто копию папки делает. Это баг, или действительно невозможно делать символические ссылки для папок, чтобы они также, как и файлы, вообще ничего не весили?

P.S. Скриншоты для примера, пробовал и на одном и том же диске, и на двух разных: 
01 | 02

Добрый🖐.
Симлинк на папки делается конечно.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

name, добрый день.
При использовании команды Скопированоmklink для создания символической ссылки на папку следует добавлять ключ Скопировано/D

Скопированоmklink /d "%USERPROFILE%\.VirtualBox" "D:\VirtualApps\VBOX\.VirtualBox"

Лучший способ помочь себе — помогать другим.
Цитата: ЯR от 30.03.2023, 15:01

name, добрый день.
При использовании команды Скопированоmklink для создания символической ссылки на папку следует добавлять ключ Скопировано/D

Скопированоmklink /d "%USERPROFILE%\.VirtualBox" "D:\VirtualApps\VBOX\.VirtualBox"

Спасибо за совет, но почему-то получается тоже самое: скриншот

Папки на рабочем столе не должно быть, ты делаешь на рабочий стол < откуда -то, и он ее сделает сам на рабочем столе.


А да, Яр правильно заметил, я не заметил, что папка твоя, это ярлык уже.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

name, это символическая ссылка, несмотря на то, что в свойствах показывает реальный размер папки. На вашем скрине имеется вкладка Ярлык.

Лайкнул Mikhail
Mikhail
Лучший способ помочь себе — помогать другим.

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

Лайкнул name
name
Лучший способ помочь себе — помогать другим.
Цитата: Mikhail от 30.03.2023, 15:21

Папки на рабочем столе не должно быть, ты делаешь на рабочий стол < откуда -то, и он ее сделает сам на рабочем столе.


А да, Яр правильно заметил, я не заметил, что папка твоя, это ярлык уже.

Цитата: ЯR от 30.03.2023, 15:21

name, это символическая ссылка, несмотря на то, что в свойствах показывает реальный размер папки. На вашем скрине имеется вкладка Ярлык.

Так вот оно что - я просто думал, что там будет по аналогии с файлами - их вес будет равен нулю. А тут вот как... Да, сейчас проверил вес на диске после создания папки - вес ровно такой же. Спасибо!

Единственное, жаль, что ее (символическую ссылку) нельзя копировать в разные места. Потому что копируется в этом случае сама папка. Получается, это надо вручную во все 400 папок мне их проставлять, копируя туда через компандую строку/твикер символическую ссылку...

Если не ошибаюсь, то перемещать симлинк можно, но только в пределах одного диска/раздела. При перемещении на другой раздел — элемент будет копироваться.
Попробуйте, с зажатой правой кнопкой мыши переместить в нужное место, в пределах одного раздела диска.

Лучший способ помочь себе — помогать другим.
Цитата: ЯR от 30.03.2023, 15:37

Если не ошибаюсь, то перемещать симлинк можно, но только в пределах одного диска/раздела. При перемещении на другой раздел — элемент будет копироваться.
Попробуйте, с зажатой правой кнопкой мыши переместить в нужное место, в пределах одного раздела диска.

Да, все верно, по диску перемещается спокойно без копирования. Но возможно ли скопировать саму символическую ссылку, чтобы вставлять ее в пределах одного диска в нужные папки? У меня условно 400 папок, где есть повторяющиеся библиотеки lib, которые занимают место. Вместо их реальных, я хочу создать одну настоящую, а в папки кинуть фантомные lib. Возможно ли скопировать и вставить саму символическую ссылку, а не ее содержимое? Если нет, тогда фиг с ним, это ж сколько мучиться придется, проставляя во все 400 папок этот фантомный lib...

name, очевидно, что так не получится, придётся помучиться.
Я, на вашем месте, создал бы командный файл (cmd, bat) и вписал все команды mklink. В каком-нибудь текстовом редакторе, например Notepad++ — это делается легко и просто.

Лайкнул name
name
Лучший способ помочь себе — помогать другим.
Цитата: ЯR от 30.03.2023, 16:09

name, очевидно, что так не получится, придётся помучиться.
Я, на вашем месте, создал бы командный файл (cmd, bat) и вписал все команды mklink. В каком-нибудь текстовом редакторе, например Notepad++ — это делается легко и просто.

Точно, отличная идея. Сейчас скопировал названия всех 450ти папок, скопировав их путь, чуть позже сделаю себе такой батник. Notepad++ всегда под рукой!

Спасибо за помощь, ЯR! 🤝

Лайкнули ЯR и Alas Nameless
ЯRAlas Nameless

Блин, сейчас на пробу сделал 15 строк, переименовал сначала в .bat, потом в .cmd - ничего не происходит. При том, что если отдельно любую строку вбить в командную строку - симлинк создается. Запускаю исполняющий файл с правами администратора. Может там команда нужна какая-то в начале еще?

Создал обычный .txt и там список из 15 строк подобных:

mklink /d "C:\games\AFamiliarWorld-v0.3.2-pc\lib" "M:/lib"
mklink /d "C:\games\AForeign-Episode-1.5-pc\lib" "M:/lib"

Переимновал в bat, запускаю - и ничего.

Если отдельно забить одну из строчек в командную строку - все работает, создается симлинк. А батник, чтоб пакетом это сделать, почему-то не работает.

name, и неудивительно, что не сработало. В части указания пути источника допущена ошибка.
Неверно — "M:/lib"
Верно     — "M:\lib"

Лучший способ помочь себе — помогать другим.
Страница 1 из 2►