3 votos

¿Cómo crear una copia de un archivo inmediatamente después de crearlo?

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 root al dispositivo.

0 votos

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

0 votos

@Xen2050 encontré 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 ni idea de cómo hacer que funcione con Android. Posiblemente un programa/script que simplemente lea un directorio cada segundo y copie inmediatamente los archivos nuevos podría funcionar también, 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 esto funcione. Puedes confirmarlo 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.

Supongamos que /data/data/com.xyz/files/ es el directorio que quieres observar.

~$ 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 informa que un archivo/directorio se crea en el directorio observado, --format es para obtener el nombre del archivo con la ruta completa, -m es para observar continuamente y -r establece observaciones de forma recursiva. -d puede demonizar el proceso, es decir, correr en segundo plano.

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

También puedes usar busybox inotifyd para casos de uso simples como se explica aquí. Para más opciones consulta inotifywait(1).

RELACIONADO: ¿Cómo identificar la app/proceso que vuelve a montar las particiones R/W, crea archivos y cambia permisos de archivos?

0 votos

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

0 votos

No pude hacer que funcionara de esta manera, pero el script en C funciona perfectamente y es mucho más fácil, aunque tal vez el problema fue con mi ejecución.

0 votos

Hola, todavía estoy atrapado. ¿Puedes ayudarme un poco, por favor? Estoy realmente confundido y no puedo ejecutar este guion en C tampoco.

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