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