Lösung 1:
GNU tar hat eine Option --newer-mtime, die ein Datumsargument erfordert, das vermutlich das letzte Mal ist, dass Sie eine Sicherung durchgeführt haben. Je nachdem, wie viel Arbeit Sie für die Wiederherstellung des Dateisystems wollten, könnte dies entweder die letzte vollständige Sicherung sein, in diesem Fall müssten Sie den vollständigen Dump und die letzte tägliche Sicherung wiederherstellen, oder Sie könnten dies seit der letzten inkrementellen Sicherung tun In diesem Fall müssten Sie den vollständigen Dump und jeden Dump danach wiederherstellen.
Diese Option ist auf den Änderungszeitstempel der Datei angewiesen. Wenn dieser also ausdrücklich geändert wurde, besteht die Möglichkeit, dass Ihr Backup ihn verfehlt.
Lösung 2:
Das Dienstprogramm Incron verwendet inotify, um Befehle auszuführen, wenn Dateisystemereignisse auftreten. Die Konfigurationsdatei ist wie eine Crontab, aber statt Zeiten geben Sie Pfade und Ereignisse an.
Der Befehl könnte entweder Ihr Sicherungsskript sein (in diesem Fall wird die Sicherung fast sofort nach der Änderung der Dateien gestartet), oder Sie könnten eine Datei erstellen und das Sicherungsskript auf die Existenz dieser Datei prüfen und sie dann löschen lassen. Wenn die Datei existiert, ist eines der Ereignisse seit der letzten Ausführung eingetreten.
Lösung 3:
Sie könnten immer find leiten 's Ausgabe an wc und erhalte eine ganzzahlige Anzahl geänderter Dateien:
find . -ctime 1 | wc -l
Obwohl Davids Antwort weniger Codeänderungen erfordert :)
Lösung 4:
Das ist eine etwas verrückte Idee, aber Sie könnten ein wenig mit md5sum und ls spielen.
Diese Idee besteht darin, nur eine md5-Summe einer Datei zu betrachten, und dass diese Datei eine Dateiliste des Verzeichnisses ist, das Sie beobachten. Und solange sich nichts ändert, bleibt die md5-Summe gleich. Aber wenn ein Zeitstempel aktualisiert wird, ändert sich die MD5-Summe, und Sie wissen, dass Sie ein neues Tar erstellen und es an Ihren FTP-Server senden müssen.
Wir könnten mit so etwas anfangen
ls -lR /path/to/dir/ | md5sum > file_list.txt.md5
Dann müssten Sie einen Vergleich zwischen dem alten md5 und dem aktuellen hinzufügen ... etc etc
/Johan
Lösung 5:
Neuere Versionen von GNU find haben die Aktion "-quit", die bewirkt, dass find die Suche sofort beendet:
— Aktion:-beenden
Sofort beenden (mit Rückgabewert Null, wenn keine Fehler aufgetreten sind). Dies unterscheidet sich von „-prune“, da „-prune“ nur für den Inhalt bereinigter Verzeichnisse gilt, während „-quit“ die Suche einfach sofort stoppt. Es werden keine untergeordneten Prozesse mehr ausgeführt, aber es werden keine weiteren in der Befehlszeile angegebenen Dateien verarbeitet. Zum Beispiel:find /tmp/foo /tmp/bar -print -quit gibt nur „/tmp/foo“ aus. Alle Befehlszeilen, die mit „-exec ... +“ oder „-execdir ... +“ erstellt wurden, werden aufgerufen, bevor das Programm beendet wird.
Sie könnten einen find-Ausdruck verwenden, um Dateien zu finden, die sich geändert haben, und mit -quit stoppen, sobald Sie eine gefunden haben. Das sollte schneller sein, als seinen Scan fortzusetzen.
-quit wurde in fileutils V4.2.3 hinzugefügt