1 votos

¿Hay alguna manera de eliminar desde /data/local sin acceso de root?

He copiado un archivo a mi teléfono con este comando:

adb push large.zip /data/local/

Llevó unos minutos y se copió con éxito, pero luego me di cuenta de que no podía encontrarlo en mi teléfono. Lo copié de nuevo a otro lugar (adb push large.zip /sdcard/media/), pero luego quería borrar el primero, que probablemente está ocupando alrededor de 10 GB de almacenamiento en vano. Sin embargo, no puedo encontrarlo:

adb shell
$ ls /data/local
 ls: /data/local: Permiso denegado
$ rm -f /data/local/large.zip
 rm: /data/local/large.zip: No existe el archivo o el directorio

a) ¿Cómo es que yo (sin acceso de root) tengo permiso para empujar un archivo a este directorio con adb, pero no puedo verlo?

b) ¿Hay alguna forma de eliminarlo sin ser root? ¿Podría haber sido eliminado ya por algún otro mecanismo?

Píxel 8, Android 14

3voto

John Dallman Puntos 103

¿Estás completamente seguro de que el comando de abajo es el que realmente ejecutaste? ¿Y que no recibiste ningún mensaje de error?

adb push large.zip /data/local/

Cuando intento hacer algo similar, obtengo:

adb push adb.exe /data/local/
adb: error: failed to copy 'adb.exe' to '/data/local/adb.exe': remote couldn't create file: Permission denied
adb.exe: 1 archivo enviado, 0 omitidos. 120.7 MB/s (5857056 bytes en 0.046s)

Eso parece que tuvo éxito, si solo miras la última línea de la salida, pero realmente falló. Esto no está muy bien manejado, porque los datos realmente se transmiten, lo que puede llevar cantidades notables de tiempo para un archivo grande. He reportado esto en el rastreador de problemas de Google.

Añadido: Intenté un experimento adicional:

Inicia una sesión de adb shell y cd /data/local/tmp. Esa es una subcarpeta de /data/local, donde la cuenta del shell puede crear archivos, y generalmente hacer lo que quiera. Obtén el espacio libre ahí:

df -k . 
Filesystem       1K-bloques     Usado Disponible Uso% Montado en
/dev/block/dm-52 111478764 15015348  96332344  14% /storage/emulated/0/Android/obb

Inicia una ventana de línea de comandos adicional, y envía un archivo grande:

adb push largefile.zip /data/local
adb: error: failed to copy 'largefile.zip' to '/data/local/largefile.zip': remote couldn't create file: Permission denied
largefile.zip: 1 archivo enviado, 0 omitidos. 30.4 MB/s (286500912 bytes en 8.992s)

Luego verifica el espacio libre nuevamente, y ha disminuido, pero no en nada parecido al tamaño del archivo enviado:

df -k .
Filesystem       1K-bloques     Usado Disponible Uso% Montado en
/dev/block/dm-52 111478764 15015444  96332248  14% /storage/emulated/0/Android/obb

Eso no prueba que no se use un directorio temporal, pero muestra que si lo hay, se limpia cuando adb push encuentra un problema de permisos.

0 votos

¡Gracias! Lo intenté nuevamente y lo reproduje, por lo que eso debe haber sido lo que ocurrió. Lo que me confundió es que copia durante varios minutos, y solo arroja el error de permiso al final. Supongo que quizás lo copia a algún directorio temporal primero, ¿y luego solo lo asigna al final?

1 votos

@JoshFriedlander: No estoy seguro acerca del directorio temporal, creo que hay un error, o de cualquier manera un error. Revisé la respuesta.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X