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
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.
0 votos
@Xen2050 está en un emulador, así que no me importa el rendimiento
0 votos
Podrías simplemente hacer un bucle con algunos comandos
find/ls
ysleep 0.25
, tal vez con un array de archivos encontrados, luego cuando cambie hacer algo?0 votos
@Xen2050 hay una gran aplicación llamada BusyBox y la aplicación tiene todos los paquetes importantes incluyendo inotify y también es muy fácil de usar e instalar.