
Ich erhalte in unregelmäßigen Abständen Dateien über einen Dienst und muss sie 72 Stunden lang in einem Ordner verfügbar haben, bevor sie in einem anderen Ordner archiviert werden. Ich möchte diesen Prozess automatisieren. Idealerweise wäre dies ein Dienst, der den Ordner „in Verwendung“ auf neue Dateien überwacht, die Zeit ihres Eintreffens notiert und sie dann 3 Tage später in das Archiv verschiebt.
Ich führe derzeit einen Crontab-Eintrag aus, der alle 72 Stunden ausgeführt wird, um den gesamten Inhalt des verwendeten Ordners in den Archivordner zu verschieben. Dies führt zu einem Synchronisierungsproblem zwischen dem Verfügbarkeitsfenster für eine bestimmte Datei und ihrer Verschiebung, wenn sie nicht mehr benötigt wird.
Antwort1
So etwas wird funktionieren:
find /source/location -maxdepth 1 -mtime +3 -type f -exec mv "{}" /destination/location/ \;
Und so funktioniert es:
find
sucht nach Artikeln in/source/location
-maxdepth 1
beschränkt die Suche auf das angegebene Verzeichnis und ignoriert Unterverzeichnisse-mtime +3
begrenzt die Ergebnisse auf 3 Tageoder älter-type f
beschränkt die Ergebnisse auf Dateien-exec
wird einen Befehl für diese Ergebnisse ausführen, in diesem Fall ist esmv
"{}"
ist, wohin das Ergebnisfind
gehen wird\;
zeigt anfind
, dass der übergebene Befehlexec
abgeschlossen ist
Fügen Sie dies in Ihren Cron-Job ein und lassen Sie es stündlich ausführen, wenn Sie es wünschen. Nur Dateien, die 72 Stunden oder älter sind, werden verschoben