Por lo tanto, he rooteado mi teléfono (GT-i9505 con Android 5.0.1) y me gustaría mover mi carpeta WhatsApp a mi tarjeta SD externa para ahorrar 3 GB de almacenamiento interno. Esto es lo que he intentado hasta ahora.
EDITORIAL: solución encontrada
Así que, después de todo la opción #2 parecía ser la correcta, pero necesitaba algunos ajustes para que funcionara. Como lo sugirió Irfan Latif el problema fue que el punto de montaje tiene que ser creado en un espacio de nombres de montaje global, de lo contrario otras aplicaciones no lo verán, así que los comandos a utilizar son:
su -mm
mount -o bind /data/sdext2/AppData/WhatsAppMedia /sdcard/WhatsApp/Media
¡Pero eso puede no ser suficiente! No funcionó hasta que me aseguré de que el espacio de nombres de Root fuera global. Para ello no conozco ninguna forma universal, pero lo que me funcionó fue ir a la configuración de la aplicación SuperSU y desmarcar la opción mount namespace separation
.
Eso realmente depende de la aplicación SU que tengas instalada.
Opción 1: enlace simbólico
Lo primero que pensé fue en hacer un enlace simbólico, así que ese fue el comando que usé:
ln -s "/data/sdext2/AppData/WhatsAppMedia" "/sdcard/WhatsApp/Media"
Ya había creado una segunda partición en mi tarjeta SD externa (ext4) que está montada en /data/sdext2
Sin embargo, eso vuelve operation not permitted
al usar el emulador de terminal (sí lo hice su
) y un error con cualquier aplicación de gestión de archivos Root que haya probado.
Después de algunas investigaciones me di cuenta de que por alguna razón, aunque /storage/emulator/0
está en una partición externa, es tratada de manera diferente para que no soporte el enlace simbólico dentro (corrígeme si me equivoco).
Así que, en la siguiente cosa
Opción 2: montar
De acuerdo con esta pregunta el siguiente comando debería montar la carpeta de la tarjeta SD externa en otra carpeta de la tarjeta SD interna, sin necesidad de un enlace simbólico
mount -o bind "/data/sdext2/AppData/WhatsAppMedia" "/sdcard/WhatsApp/Media"
Sin embargo, mientras se ejecuta el comando no devuelve ningún error la carpeta en /sdcard/WhatsApp/Media
sigue vacía, así que no sé realmente cómo manejar esto.
Opción 3: enlace simbólico en /datos/medios/
Seguí las instrucciones de este puesto e hizo el enlace simbólico en /data/media/0
en lugar de almacenamiento, así que usando este comando:
ln -s "/data/sdext2/AppData/WhatsAppMedia" "/data/media/0/WhatsApp/Media"
¡Esta vez el enlace se crea! Sin embargo...
Aunque un ls
en /data/media/0/WhatsApp/Media
reveló que el vínculo fue exitoso, cd /sdcard/WhatsApp/Media
devuelve una muy irritante no such file or directory
y eso es confirmado por el explorador de archivos que muestra una carpeta vacía con un icono de archivo en blanco.
Mis pensamientos
En primer lugar, ahora descubrí que realmente odio a Android. Ahora, dicho esto, esto es lo que creo que podría ayudar a hacer:
-
moviendo mis archivos de la tarjeta SD a otro lugar: si el resto del sistema de archivos Root soporta symlink (lo cual parece ser así), podría incluso mover la carpeta
/storage/emulated/0
en otro lugar y hacer un nuevo vínculo con él, pero no sé si eso resolvería el problema
Eso es todo por ahora, me pondré al día con más opciones cuando piense en ellas...