Confundido por las muchas ubicaciones de la virtual / sdcard /


46

Algunos dispositivos (como mi Nexus 4) no tienen una ranura externa para una tarjeta SD. En cambio, hay una carpeta raíz llamada /sdcard/que se trata de la misma manera. Pero también encuentro otras rutas que apuntan a los mismos archivos: debe haber algún tipo de redireccionamiento (creo que esto se llama enlaces simbólicos en Linux).

Todas estas rutas contienen los mismos archivos:

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/

¿Qué camino es el "real"? ¿Qué pasa con los otros caminos? ¿Para qué se usan, por qué existen?

Respuestas:


38

Conferencia recomendada: ¿Por qué / sdcard / se convirtió en / sdcard / 0 / with 4.2? .

En resumen: tiene que ver con la funcionalidad multiusuario introducida con Jelly Bean:

  • /storage/emulated/0/: que yo sepa, esto se refiere a la "MMC emulada" ("parte del propietario"). Por lo general, este es el interno. El "0" representa al usuario aquí, "0" es el primer usuario, también conocido como propietario del dispositivo. Si crea usuarios adicionales, este número se incrementará para cada uno.
  • /storage/emulated/legacy/como antes, pero apuntando a la parte del usuario que trabaja actualmente (para el propietario, esto sería un enlace simbólico a /storage/emulated/0/). Por lo tanto, este camino debería llevar a cada usuario a su "parte".
  • /sdcard/: Según un comentario de Shywim , este es un enlace simbólico para ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0 o superior)
  • /storage/sdcard0/: Como no hay ningún legacycolgante aquí (vea los comentarios a continuación), el "0" en este caso identifica el dispositivo (tarjeta) en sí. Eventualmente, se podría conectar un lector de tarjetas con otra tarjeta SD a través de OTG, que luego se convertiría /storage/sdcard1(no hay prueba de eso, solo una suposición, pero diría que es una buena)

Aunque uno podría llegar a la conclusión de que también debería haber una /storage/sdcard/legacy, no la hay (ver comentarios), lo que tiene sentido con mi suposición de que los números aquí no están relacionados con el usuario, sino con posibles tarjetas múltiples: " 0 "siempre sería el que está en la ranura para tarjetas del dispositivo, por lo que no es necesario un" enlace simbólico heredado "aquí.


¡Gracias! Y no, no hay /storage/sdcard/legacycamino.
Torben Gundtofte-Bruun

2
Extraño. Pero eso podría tener que ver con el hecho de que casi no hay permisos en una tarjeta sd real (debido a que el sistema de archivos FAT no los admite). Al observar la diferencia ( /sdcard0/versus /emulated/0), el "0" aquí podría estar destinado para el caso en que se conectan varias tarjetas SD a través de un lector de tarjetas y el modo de host USB en ese momento. Solo una suposición, no es un hecho difícil, pero diría que es bueno.
Izzy

Respuesta actualizada en consecuencia :)
Izzy

2
/sdcard/es simplemente un enlace simbólico a /storage/sdcard0/. En una versión anterior a 4.0.0, lo es /mnt/sdcard/.
Matthieu Harlé

Y supongo que, en Android 4.0+, ¿ /mnt/sdcard/es un enlace simbólico /storage/sdcard0/? Dado que ambos son navegables en mi Nexus 4.
MrWhite

2

Sí, un poco confuso, pero estas son rutas alternativas para el diseño de la memoria

/ mnt / sdcard0 / (Tarjeta SD virtual interna)

e Izzy es correcto si hay más dispositivos conectados, pero la denominación puede ser diferente según el dispositivo.

ex. / mnt / sdcard1 / (Tarjeta SD física en la ranura SD)

pero otros dispositivos como una unidad flash USB se conectan con un adaptador podrían llamarse

/ mnt / media_rw / usbdisk (android kitkat 4.4 y superior?) o / mnt / usbdisk (jellybean 4.1 - 4.2)


1
Sí, la denominación puede depender del dispositivo / fabricante / ROM. Pero por lo general, /mnt/*es solo un enlace simbólico en todos esos casos, con los "montajes reales" que residen a continuación /storage:)
Izzy

Bueno, también tengo una carpeta de shell en mnt . Cambio la ROM del dispositivo con frecuencia y, por lo tanto, para esas roms, que hacen que la tarjeta SD externa sea la memoria predeterminada, la carpeta de shell se comporta como mi memoria interna, y para otras roms que no intercambian sdcard como memoria interna, el shell ni siquiera viene en la imagen Simplemente permanece allí en la carpeta con todos los datos intactos, pero el administrador de archivos local no puede acceder a ellos. Quería saber qué es exactamente.
Ali_Waris
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.