GNU/Linux >> Tutoriels Linux >  >> Linux

Sous Linux, quel est un moyen plus rapide que `find` ou `diff -r` pour voir si quelque chose à l'intérieur d'un répertoire a changé ?

Solution 1 :

GNU tar a une option --newer-mtime, qui nécessite un argument de date, qui serait probablement la dernière fois que vous avez effectué une sauvegarde. Selon la quantité de travail que vous vouliez restaurer le système de fichiers, cela pourrait être soit la dernière sauvegarde complète, auquel cas vous auriez besoin de restaurer le vidage complet et le dernier quotidien, soit vous pourriez le faire depuis la dernière sauvegarde incrémentielle, dans laquelle cas, vous devrez restaurer le vidage complet et chaque vidage par la suite.

Cette option repose sur l'horodatage de modification sur le fichier, donc si cela a été explicitement modifié, il y a une chance que votre sauvegarde le manque.

Solution 2 :

L'utilitaire incron utilise inotify pour exécuter des commandes lorsque des événements de système de fichiers se produisent. Le fichier de configuration est comme un crontab, mais au lieu de fois, vous spécifiez des chemins et des événements.

La commande peut être soit votre script de sauvegarde (auquel cas la sauvegarde démarrera presque immédiatement après la modification des fichiers), soit vous pouvez lui demander de créer un fichier et de demander au script de sauvegarde de vérifier l'existence de ce fichier, puis de le supprimer. Si le fichier existe, l'un des événements s'est produit depuis la dernière exécution.

Solution 3 :

Vous pouvez toujours diriger trouver la sortie vers wc et obtenir un nombre entier de fichiers modifiés :

find . -ctime 1 | wc -l

Bien que la réponse de David nécessite moins de modifications de code :)

Solution 4 :

C'est une idée un peu folle, mais vous pouvez jouer un peu avec md5sum et ls.

Cette idée est de ne regarder qu'un md5sum d'un fichier, et que ce fichier est une liste de fichiers du répertoire que vous regardez. Et tant que rien ne change, le md5sum est le même. Mais si un horodatage est mis à jour, la somme md5 changera et vous savez que vous devez créer un nouveau tar et l'envoyer à votre serveur ftp.

Nous pourrions commencer par quelque chose comme ça

ls -lR /path/to/dir/ | md5sum > file_list.txt.md5

Ensuite, vous devrez ajouter une comparaison entre l'ancien md5 et l'actuel... etc etc

/Johan

Solution 5 :

Les versions récentes de GNU find ont l'action "-quit", ce qui fait que find arrête immédiatement la recherche :

— Action :-quitter

Quitter immédiatement (avec la valeur de retour zéro si aucune erreur ne s'est produite). Ceci est différent de "-prune" car "-prune" ne s'applique qu'au contenu des répertoires élagués, tandis que "-quit" arrête simplement la recherche immédiatement. Aucun processus enfant ne sera laissé en cours d'exécution, mais aucun autre fichier spécifié sur la ligne de commande ne sera traité. Par exemple, find /tmp/foo /tmp/bar -print -quit n'affichera que "/tmp/foo". Toutes les lignes de commande qui ont été construites par '-exec ... +' ou '-execdir ... +' sont appelées avant que le programme ne soit quitté.

Vous pouvez utiliser une expression de recherche pour rechercher des fichiers qui ont été modifiés et utiliser -quit pour vous arrêter dès que vous en trouvez un. Cela devrait être plus rapide que de trouver en poursuivant son analyse.

-quit a été ajouté dans fileutils V4.2.3


Linux
  1. Comment les tests Linux ont changé et ce qui compte aujourd'hui

  2. Comment puis-je savoir quel processus a un verrou sur un fichier sous Linux ?

  3. Trouver le fichier puis cd dans ce répertoire sous Linux

  4. Qu'est-ce que le double point (..) et le point unique (.) sous Linux ?

  5. Comment puis-je trouver un fichier/répertoire qui pourrait se trouver n'importe où sur la ligne de commande Linux ?

Comment compter les fichiers dans le répertoire sous Linux

Rechercher et supprimer le fichier le plus ancien s'il y a plus de X fichiers dans un répertoire sous Linux

Comment trouver la taille totale d'un répertoire sous Linux

La commande Linux find Directory :Explication

Qu'entend-on par monter un périphérique sous Linux ?

Sous Linux, quelle métrique a une route sans métrique ?