Explorador
Concepto

Archivos entre Windows y Linux

Cómo está montado cada sistema de archivos dentro del otro, por qué importa dónde se guardan los proyectos y cómo cruzar de un lado a otro.

Actualizado el

En esta guía

Cómo funciona WSL 2

Windows sigue siendo el sistema anfitrión. WSL 2 corre un kernel de Linux real dentro de una máquina virtual ligera, con su propio disco virtual. Por eso uname -a muestra Linux aunque el equipo sea una laptop con Windows.

uname -a

De ahí salen dos sistemas de archivos distintos, cada uno visible desde el otro.

Dos sistemas de archivos

Dónde vive Ruta desde Linux Ruta desde Windows
Archivos de Linux Disco virtual de la distro /home/usuario (~) \\wsl$\Ubuntu\home\usuario
Archivos de Windows Disco C: /mnt/c/Users/usuario C:\Users\usuario

Dónde guardar los proyectos

Los proyectos van dentro del sistema de archivos de Linux (~/proyectos), no en /mnt/c/....

Cruzar de un sistema al otro pasa por una capa de traducción, y eso tiene dos consecuencias:

  • Rendimiento: operaciones con muchos archivos pequeños (git status, npm install, builds) son mucho más lentas en /mnt/c.
  • Permisos: los archivos de Windows no tienen permisos de Linux reales. Desde WSL aparecen todos como ejecutables, chmod no se comporta como se espera y Git detecta cambios de modo que no existen. Está explicado en Git y el permiso de ejecución.

De Linux a Windows

explorer.exe .            # abre la carpeta actual en el Explorador de Windows
code .                    # abre la carpeta en VS Code, conectado a WSL
cd /mnt/c/Users           # entrar al disco C:
ls /mnt                   # una carpeta por cada unidad de Windows

Los ejecutables de Windows se pueden llamar desde la distro escribiendo su nombre con .exe:

notepad.exe notas.txt
clip.exe < archivo.txt    # copia el contenido al portapapeles de Windows

De Windows a Linux

En la barra de direcciones del Explorador:

\\wsl$\Ubuntu

También aparece como Linux en el panel lateral del Explorador. Desde ahí se copian archivos entre ambos sistemas arrastrando.

Convertir rutas

wslpath -w ~/proyectos              # ruta de Linux a formato Windows
wslpath 'C:\Users\usuario'          # ruta de Windows a formato Linux