Junction (точка соединения) в Windows: что это и как создать

Что делать, если Viber сожрал место на диске C: junction, симлинк и перенос папки загрузок

Разбираем junction и символическую ссылку на каталог, почему команда mklink без ключей создаёт «файл нулевого размера», и по шагам переносим ViberDownloads на диск E: без смены пути в настройках Viber.

В командной строке синтаксис такой: сначала имя ссылки, потом цель. Если не указать ни /J, ни /D, ни /H, Windows по умолчанию создаёт символическую ссылку на файл (file symlink). Она не хранит ваши данные внутри себя — это запись в NTFS с типом «репарс‑точка», поэтому в свойствах часто виден размер 0: данные лежат только у цели, если цель вообще существует и это файл.

Вы указали цель E:\ — это корень тома (каталог), а не файл. Ссылка «файл → каталог» системой не поддерживается как нормальный сценарий: объект может выглядеть как пустой файл, открываться криво или не открываться. Это не «сломанная копия диска», а просто неверный тип ссылки и неверная цель.

Что сделать с D:\TEST: если он не нужен — удалите как обычный файл: в проводнике или в cmd: del D:\TEST (для файлового симлинка). Данные на E: от этого не пострадают. Если не удаляется — уточните, не открыт ли путь в программе; для каталоговых junction/симлинков удаляют иначе (см. ниже).

Каталог: mklink /J (junction)

Directory junction — «точка соединения» только для каталогов. Старый, хорошо поддерживаемый механизм NTFS. Для переноса папок вроде загрузок Viber он обычно самый предсказуемый. Создание через mklink /J часто проходит без включения режима разработчика и без админских привилегий в типичных пользовательских путях.

Каталог: mklink /D (символическая ссылка на каталог)

Это именно directory symbolic link. Гибче (например, можно относительные пути в некоторых сценариях), но в Windows создание симлинков по умолчанию часто требует права «Создание символических ссылок» или режим разработчика — иначе mklink /D выдаст отказ в доступе. Если junction решает задачу — для Viber чаще выбирают /J.

Файл: просто mklink (без флагов)

Создаётся симлинк на файл. Цель должна быть файлом. Для переноса папки — не подходит.

Кратко: ярлык .lnk — для оболочки; /J и /D — для того, чтобы программы видели «старую» папку по старому пути, а данные лежали в другом месте.

Пример: Viber забил диск C — перенос ViberDownloads на E:\

Идея: реальная папка живёт на E:, а в профиле остаётся путь с тем же именем через junction.

  1. Полностью закройте Viber (в трее тоже), чтобы не было открытых файлов в папке.
  2. Откройте cmd (желательно от обычного пользователя, у которого этот профиль; админ не обязателен для junction в своём профиле).
  3. Переименуйте старую папку во временное имя (чтобы освободить имя для junction):
    ren "%USERPROFILE%\Documents\ViberDownloads" ViberDownloads_old
  4. Создайте на E: реальную папку и перенесите в неё содержимое (или всю папку целиком через проводник):
    mkdir "E:\ViberDownloads"
    xcopy "%USERPROFILE%\Documents\ViberDownloads_old\*" "E:\ViberDownloads\" /E /I /H /Y
    Либо переместите через проводник: вырезать всё из ViberDownloads_old → вставить в E:\ViberDownloads.
  5. Убедитесь, что данные на месте, затем создайте junction с тем путём, который ждёт Viber:
    mklink /J "%USERPROFILE%\Documents\ViberDownloads" "E:\ViberDownloads"
    Первый аргумент — то, что должно снова появиться в «Документах»; второй — где файлы лежат физически.
  6. Проверьте: в проводнике Documents\ViberDownloads открывается и файлы на месте. Запустите Viber, проверьте загрузку/открытие медиа.
  7. Удалите пустую или ненужную ViberDownloads_old, если всё уже в E:\ViberDownloads:
    rmdir "%USERPROFILE%\Documents\ViberDownloads_old"

Важно: удаление самого junction (если когда‑нибудь сделаете rmdir на Documents\ViberDownloads) не удалит файлы на E:\ViberDownloads — снимется только «перенаправление». Удаление файлов внутри папки через проводник по-прежнему удаляет реальные файлы на E:.

Шпаргалка по командам

  • mklink /J "ссылка" "целевая_папка" — junction (папка → папка), удобно для Viber.
  • mklink /D "ссылка" "целевая_папка" — симлинк на каталог (часто нужны права).
  • mklink "ссылка" "целевой_файл" — только для файлов; не используйте с E:\.

Перед переносом сделайте копию важных чатов/файлов. Если Viber у вас хранит загрузки в другом пути — тот же приём: перенос реальной папки + mklink /J на старый путь.