Переносите файлы из Windows в вашу систему на базе Ubuntu под WSL2, и вместо чистой директории получаете россыпь мусорных файлов с припиской Zone.Identifier. Это встроенная фича безопасности Microsoft, которая помечает скачанные из сети файлы, но для локальной разработки она только мешает. Разберемся, как отключить эту радость, чтобы мы могли спокойно писать код, а не чистить логи.
Правим реестр Windows
Самый надежный способ отучить систему плодить эти метки — поправить политики вложений через редактор реестра.
- Откройте редактор реестра.
- Перейдите по пути
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments. - Создайте новый параметр типа DWORD с именем SaveZoneInformation.
- Установите для него значение
1.
Если единица не помогла, попробуйте изменить значение SaveZoneInformation на 2. У некоторых пользователей изменения применяются только с этой цифрой.
Меняем подход к копированию файлов
Проблема с появлением идентификаторов зон обычно возникает, когда вы пытаетесь закидывать файлы напрямую из проводника Windows в файловую систему WSL2. Производительность при таком подходе оставляет желать лучшего, поэтому проще поменять саму привычку.
Гораздо эффективнее идти от обратного. Просто забирайте нужные данные из среды WSL, обращаясь к примонтированным дискам Windows. Копировать файлы и работать с ними лучше, находясь прямо в терминале дистрибутива. Для доступа к диску C просто используйте путь /mnt/c/.
Решение для Windows 11 Home
В домашних версиях ОС трюк с реестром срабатывает не у всех. Если вы скачиваете файлы через Chrome, кидаете их в WSL2 и все равно видите мусор, придется автоматизировать его удаление.
Откройте ваш конфигурационный файл ~/.bashrc и добавьте туда простой алиас для быстрой зачистки:
alias delete_junk_files='find . -name "*:Zone.Identifier" -type f -delete'
Теперь при появлении мусорных файлов вам достаточно выполнить команду delete_junk_files. Система сама найдет все логи идентификаторов зон в текущей директории и молча их удалит.