GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande lorsque le contenu d'un répertoire est mis à jour ?

Il existe un répertoire A dont le contenu est fréquemment modifié par d'autres personnes.

J'ai créé un répertoire personnel B où je garde tous les fichiers qui ont déjà été dans A .

Actuellement, je lance occasionnellement rsync pour obtenir les fichiers à sauvegarder depuis A à B . Cependant, je crains la possibilité que certains fichiers soient ajoutés dans A , puis supprimé de A avant d'avoir la chance de les copier dans B .

Quelle est la meilleure façon d'empêcher que cela se produise? Idéalement, j'aimerais que mon script de sauvegarde actuel s'exécute à chaque fois que le contenu de A se changer.

Réponse acceptée :

Si vous avez installé inotify-tools, vous pouvez utiliser inotifywait pour déclencher une action si un fichier ou un répertoire est écrit dans :

#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
    /run/backup/to/B 
done

Où le -qq le commutateur est complètement silencieux, -r est récursif (si nécessaire) et -e est l'événement à surveiller, dans ce cas modify . De man inotifywait :

modifier
Un fichier surveillé ou un fichier dans un répertoire surveillé a été écrit.


Linux
  1. Comment obtenir un nombre de fichiers dans un répertoire à l'aide de la ligne de commande ?

  2. Comment obtenir la taille du répertoire sous Linux

  3. Comment exécuter la commande "find" sur le répertoire en cours uniquement et non sur les sous-répertoires

  4. Comment exécuter un script shell lorsqu'un fichier ou un répertoire change ?

  5. Comment puis-je exclure un répertoire de la commande ls

Comment obtenir la taille d'un répertoire sous Linux

Comment supprimer un répertoire sous Linux

Comment obtenir la taille d'un répertoire sous Linux

Comment exécuter des commandes Linux en arrière-plan

Comment exécuter tous les scripts dans un répertoire sous Linux

Comment compter les fichiers dans le répertoire sous Linux