3 votes

Comment créer une copie d'un fichier immédiatement après sa création?

J'ai une application Android qui va créer un fichier et le supprimer immédiatement. Je veux savoir comment je peux intercepter ce fichier ou en créer une copie ou même désactiver les autorisations de l'utilisateur pour supprimer un fichier. J'ai un accès root à l'appareil.

0 votes

Je suis presque sûr qu'il y a un moyen de surveiller un répertoire pour détecter des modifications, du moins parfois... Je commencerais par chercher cela

0 votes

@Xen2050 j'ai trouvé la réponse, je peux le faire avec inotify, mais comme le système Linux est sur Android, je ne peux pas l'installer facilement. J'essaie de l'installer

0 votes

Je pense que inotify a raison, je n'ai aucune idée comment le faire fonctionner avec Android non plus. Il est possible qu'un programme/script qui lit simplement un répertoire chaque seconde et copie immédiatement de nouveaux fichiers puisse fonctionner également, mais cela pourrait être intensif en ressources et ralentir les choses.

4voto

Irfan Latif Points 16863

Vous pouvez y parvenir en utilisant inotifywait de inotify-tools. Votre noyau doit être construit avec CONFIG_INOTIFY_USER=y pour que cela fonctionne. Vous pouvez le confirmer avec :

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

Ou en vérifiant l'existence du répertoire /proc/sys/fs/inotify. /proc/config.gz peut ne pas exister sur tous les appareils en fonction de la configuration de construction du noyau.

Disons que /data/data/com.xyz/files/ est le répertoire que vous souhaitez surveiller.

~$ 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 est l'événement qui signale qu'un fichier/répertoire est créé dans le répertoire surveillé, --format est pour obtenir le nom de fichier avec le chemin complet, -m permet de surveiller en continu et -r établit des surveillances récursives. -d peut mettre le processus en tant que démon c'est-à-dire s'exécuter en arrière-plan.

Tous les fichiers nouvellement créés dans le répertoire surveillé ou dans un sous-répertoire seront copiés dans /sdcard/backup.

Vous pouvez également utiliser busybox inotifyd pour un cas d'utilisation simple comme expliqué ici. Pour plus d'options, voir inotifywait(1).

CONNEXE : Comment identifier l'application/processus qui remonte en lecture/écriture les partitions, crée des fichiers et modifie les permissions des fichiers ?

0 votes

Salut lien la manière la plus facile est de travailler avec cette bibliothèque en c

0 votes

Je n'ai pas pu faire fonctionner cette méthode, mais le script c a très bien fonctionné et c'était beaucoup plus facile, mais peut-être que le problème était lié à mon exécution.

0 votes

Salut, je suis toujours bloqué. Pouvez-vous m'aider un peu, s'il vous plaît? Je suis vraiment confus. Je n'arrive pas non plus à exécuter ce script en C.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X