Что делать, если Viber сожрал место на диске C: junction, симлинк и перенос папки загрузок
Разбираем junction и символическую ссылку на каталог, почему команда mklink без ключей создаёт «файл нулевого размера», и по шагам переносим ViberDownloads на диск E: без смены пути в настройках Viber.
Почему после mklink "D:\TEST" "E:\" появился «файл» с нулевым объёмом
В командной строке синтаксис такой: сначала имя ссылки, потом цель. Если не указать ни /J, ни /D, ни /H, Windows по умолчанию создаёт символическую ссылку на файл (file symlink). Она не хранит ваши данные внутри себя — это запись в NTFS с типом «репарс‑точка», поэтому в свойствах часто виден размер 0: данные лежат только у цели, если цель вообще существует и это файл.
Вы указали цель E:\ — это корень тома (каталог), а не файл. Ссылка «файл → каталог» системой не поддерживается как нормальный сценарий: объект может выглядеть как пустой файл, открываться криво или не открываться. Это не «сломанная копия диска», а просто неверный тип ссылки и неверная цель.
Что сделать с D:\TEST: если он не нужен — удалите как обычный файл: в проводнике или в cmd: del D:\TEST (для файлового симлинка). Данные на E: от этого не пострадают. Если не удаляется — уточните, не открыт ли путь в программе; для каталоговых junction/симлинков удаляют иначе (см. ниже).
Симлинк на папку и 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.
- Полностью закройте Viber (в трее тоже), чтобы не было открытых файлов в папке.
- Откройте cmd (желательно от обычного пользователя, у которого этот профиль; админ не обязателен для junction в своём профиле).
-
Переименуйте старую папку во временное имя (чтобы освободить имя для junction):
ren "%USERPROFILE%\Documents\ViberDownloads" ViberDownloads_old -
Создайте на
E:реальную папку и перенесите в неё содержимое (или всю папку целиком через проводник):
Либо переместите через проводник: вырезать всё изmkdir "E:\ViberDownloads" xcopy "%USERPROFILE%\Documents\ViberDownloads_old\*" "E:\ViberDownloads\" /E /I /H /YViberDownloads_old→ вставить вE:\ViberDownloads. -
Убедитесь, что данные на месте, затем создайте junction с тем путём, который ждёт Viber:
Первый аргумент — то, что должно снова появиться в «Документах»; второй — где файлы лежат физически.mklink /J "%USERPROFILE%\Documents\ViberDownloads" "E:\ViberDownloads" -
Проверьте: в проводнике
Documents\ViberDownloadsоткрывается и файлы на месте. Запустите Viber, проверьте загрузку/открытие медиа. -
Удалите пустую или ненужную
ViberDownloads_old, если всё уже вE:\ViberDownloads:rmdir "%USERPROFILE%\Documents\ViberDownloads_old"
Важно: удаление самого junction (если когда‑нибудь сделаете rmdir на Documents\ViberDownloads) не удалит файлы на E:\ViberDownloads — снимется только «перенаправление». Удаление файлов внутри папки через проводник по-прежнему удаляет реальные файлы на E:.
Шпаргалка по командам
mklink /J "ссылка" "целевая_папка"— junction (папка → папка), удобно для Viber.mklink /D "ссылка" "целевая_папка"— симлинк на каталог (часто нужны права).mklink "ссылка" "целевой_файл"— только для файлов; не используйте сE:\.