Es gibt keine Möglichkeit, sich auf die Daten zu verlassen, an denen eine Datei kopiert oder in einen Ordner verschoben wurde. Windows kann es zwischen Dateisystemen, Laufwerken, Netzwerkfreigaben usw. beibehalten. Möglicherweise können Sie einen Fehler mit einem Linux-Dateiserver beheben oder verhindern, dass Benutzer Dateien mithilfe von FTP oder einem webbasierten Upload-System direkt kopieren.
Wenn Sie damit einverstanden sind, dass Benutzer die Dateien nach dem Hochladen nicht ändern können, haben Sie möglicherweise separate Upload- und Zugriffsordner sowie ein Skript, mit dem Dateien zwischen ihnen verschoben und neu datiert werden. Es hört sich jedoch so an, als ob Sie möchten, dass die Benutzer die Dateien direkt ändern können.
Eine einfache, wenn auch etwas abgedroschene Lösung wäre es, mit den Daten herumzuspielen. Ich würde zwei Skripte schreiben:
Stündliches Date Changer-Skript
Lassen Sie ein Skript etwa einmal pro Stunde in Ihrer bevorzugten Sprache ausführen, um Folgendes zu tun:
- Sucht nach Dateien mit einem Datum, das in den letzten 20 Jahren geändert wurde.
- Wenn eine solche Datei gefunden wird, ändern Sie das Datum auf heute minus 20 Jahre.
In Powershell würde es ungefähr so aussehen:
$path = "D:\test"
$today = Get-Date
$before = $today.AddDays(-7300) #356*20 days
Get-ChildItem -Recurse -Path $path | foreach {
if ($_.LastWriteTime -gt $before) {
Write-Host $_.Name
$_.LastWriteTime = $before
}
}
Wenn Sie dieses Skript heute (27. Mai) ausführen, wird das Änderungsdatum aller Dateien auf den 1. Juni 1994 festgelegt - genau vor 356 * 20 Tagen. Da nur Dateien geändert werden, die neuer sind als der Wert "$ before", werden Dateien, die bereits in der Vergangenheit liegen, nicht berührt.
Bereinigungsskript
Das Bereinigungsskript würde jede Nacht ausgeführt und:
- Suche nach Dateien mit dem Änderungsdatum "vor 20 Jahren und X Tagen"
- Lösche sie
Ich werde das Skript für diesen Teil nicht schreiben - es gibt viele Dienstprogramme, mit denen Sie Dateien löschen können, die älter als ein bestimmtes Datum sind. Wählen Sie, was Sie möchten. Der wichtige Teil ist, nach Dateien zu suchen, die 7300 + X Tage alt sind, wobei X die Anzahl der Tage angibt, die Sie seit der letzten Änderung aufbewahren möchten.
Vorteile
Dies hat einige Vorteile gegenüber den anderen Antworten hier:
- Der Timer wird zurückgesetzt, wenn jemand die Datei ändert.
- Es sind keine alternativen NTFS-Streams zum Markieren der Dateien erforderlich (diese werden beim Verschieben der Datei beibehalten und können daher zum vorzeitigen Löschen einer geänderten Datei führen).
- Sollte nur minimale Auswirkungen auf die Leistung haben. Keine Notwendigkeit, eine Datenbank oder eine Liste von Dateinamen und / oder Hashes zu führen.
- Nichts bricht schrecklich, wenn die Skripte nicht ausgeführt werden können. Es ist kein Dienst oder ständig laufendes Programm erforderlich, um das Datum zu aktualisieren. Nur ein paar geplante Aufgaben. Lösungen, die darauf angewiesen sind, nach neuen Dateien zu suchen und deren letzten Änderungszeitpunkt auf den aktuellen Stand zu bringen, können dazu führen, dass neue Dateien gelöscht werden, wenn der Dienst ausfällt oder ein Race Condition auftritt.
Das einzige Problem, das ich sehen kann, ist, ob Leute eine Datei, die vor 20 Jahren zuletzt geändert wurde, in den Ablageordner kopieren. Ich denke, in den meisten Szenarien ist das wahrscheinlich kein großes Problem, aber es könnte auftauchen.