Automatisches Verschieben neuer Dateien nach einer festgelegten Zeitspanne

Automatisches Verschieben neuer Dateien nach einer festgelegten Zeitspanne

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:

  • findsucht nach Artikeln in/source/location
  • -maxdepth 1beschränkt die Suche auf das angegebene Verzeichnis und ignoriert Unterverzeichnisse
  • -mtime +3begrenzt die Ergebnisse auf 3 Tageoder älter
  • -type fbeschränkt die Ergebnisse auf Dateien
  • -execwird einen Befehl für diese Ergebnisse ausführen, in diesem Fall ist esmv
  • "{}"ist, wohin das Ergebnis findgehen wird
  • \;zeigt an find, dass der übergebene Befehl execabgeschlossen 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

verwandte Informationen