3 votos

¿Cómo se puede crear una copia de un archivo inmediatamente después de ser creado ?

Tengo una aplicación de Android que creará un archivo y lo eliminará inmediatamente. Quiero saber cómo puedo atrapar este archivo o crear una copia o incluso deshabilitar los permisos de usuario para eliminar un archivo. Tengo acceso de root al dispositivo.

0 votos

Estoy bastante seguro de que hay una forma de monitorear un directorio para ver cambios, al menos a veces... Yo comenzaría buscando eso.

0 votos

@Xen2050 encuentro la respuesta, puedo hacerlo con inotify pero como el sistema operativo es Linux en Android no puedo instalarlo fácilmente, estoy intentando instalarlo.

0 votos

Creo que inotify tiene razón, no tengo idea de cómo hacerlo funcionar con Android tampoco. Posiblemente un programa/script que simplemente lea un directorio cada segundo y copie inmediatamente los nuevos archivos también podría funcionar, pero podría ser intensivo en recursos y ralentizar las cosas.

4voto

Jack Wade Puntos 231

Puedes lograr esto usando inotifywait de inotify-tools. Tu kernel debe estar construido con CONFIG_INOTIFY_USER=y para que funcione. Puedes confirmar con:

~# zcat /proc/config.gz | grep INOTIFY

O la existencia del directorio /proc/sys/fs/inotify. /proc/config.gz puede no existir en todos los dispositivos dependiendo de la configuración de construcción del kernel.

Digamos que /data/data/com.xyz/files/ es el directorio que deseas monitorear.

~$ mkdir -p /sdcard/backup/
~# inotifywait -rm --format '%w%f' -e create /data/data/com.xyz/files/ |
while read file
do
    [ -f "$file" ] && cp -av "$file" /sdcard/backup/
done

-e create es el evento que reporta que un archivo/directorio es creado en el directorio monitoreado, --format es para obtener el nombre de archivo con la ruta completa, -m es para monitorear continuamente y -r establece monitoreos de forma recursiva. -d puede daemonizar el proceso es decir, correr en segundo plano.

Todos los archivos recién creados en el directorio monitoreado o en cualquier subdirectorio serán copiados a /sdcard/backup.

También puedes usar busybox inotifyd para un caso de uso simple como se explica aquí. Para más opciones ver inotifywait(1).

RELACIONADO: ¿Cómo identificar la aplicación/proceso que remonta particiones R/W, crea archivos y cambia permisos de archivo?

0 votos

Hola enlace la forma más fácil es trabajar con esta biblioteca en c

0 votos

No pude hacer que este camino funcionara, pero el script en C funcionó muy bien y mucho más fácil, pero tal vez el problema fue con mi ejecución.

0 votos

Hola, todavía estoy atascado, ¿puedes ayudarme un poco por favor? Estoy realmente confundido, tampoco puedo ejecutar este script en C.

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