Daten löschen > 30 Tage

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

el_maestro01

Benutzer
Registriert
09. Dez. 2015
Beiträge
4
Reaktionspunkte
0
Punkte
0
Hallo zusammen!
Ich bräuchte mal eure Hilfe, da ich seit Tagen mit der Thematik beschäftigt bin und nicht weiterkomme.

Erstmal kurz zum Szenario:
Wir haben verschiedene externe User (>100), die in ihren Homeverzeichnissen Daten hochladen über die DSM-Weboberfläche, quasi ein Dropbox-Ersatz. Um die NAS sauber zu halten, möchten ich gerne ein Skript laufen lassen, das anhand des "Erstellungsdatum" (=Upload-Datum) alles löscht das älter als 30 Tage ist.

Leider kann ich meines Wissens nach per Skript via SSH nur das "Änderungsdatum" ansprechen, und dieses wird beim Hochladen der Datei nicht verändert.

Vielleicht hat von euch jemand eine Idee, wie ich das Änderungsdatum beeinflussen kann nach dem Upload oder vll auch einen ganz anderen Lösungs-Ansatz. Ich bin dankbar für jede Hilfe :-)
Viele Grüße
 
Eigentlich müsstest Du auch das Create-Date abfragen können, vielleicht hilft Dir das weiter.
 
Das Problem ist meinem Verständnis nach nicht die Nutzung eines find <Pfad> -mtime +30. Es liegt vielmehr darin, dass die Dateien beim Upload mit ihrem bisherigen Timestamp - also dem auf der Quelle - und nicht mit dem aktuellen - also dem Upload-Datum - als Änderungsdatum gespeichert werden.
 
Eigentlich müsstest Du auch das Create-Date abfragen können, vielleicht hilft Dir das weiter.
meinst du damit ctime? Das ist genau genommen aber nicht das create-Date, sondern das Change-Date. ctime speichert den Inode oder File change. Das muss nicht mit dem Erstellungsdatum überinstimmen. Wenn man z.B. die Rechte eines Files ändert, ändert sich auch ctime.
@topicstarter
strenggenommen gibt es kein Erstellungsdatum in einem Linux Filesystem. Ext4 wurde zwar um das Attribut "birth time" via crtime erweitert, aber afaik gibt es keine Kernel API um das abzufragen. Mit dem stat Kommando sieht man zwar den Eintrag "Geburt", aber der ist bei allen meinen Linux-Boxen immer null
 
Ja, ich meinte die ctime - danke für die Aufklärung! Es geht mir nur darum, dass der TO einmal prüft, ob er über ctime selektieren kann.
 
Das Problem ist meinem Verständnis nach nicht die Nutzung eines find <Pfad> -mtime +30. Es liegt vielmehr darin, dass die Dateien beim Upload mit ihrem bisherigen Timestamp - also dem auf der Quelle - und nicht mit dem aktuellen - also dem Upload-Datum - als Änderungsdatum gespeichert werden.

Das ist genau mein Problem!


Mit -mtime wäre es realisierbar wenn es möglich wäre nach einem Upload automatisch einmalig den "touch /*-Befehl" auszuführen. Was aber vermutlich nicht funktioniert....
 
Ja, ich meinte die ctime - danke für die Aufklärung! Es geht mir nur darum, dass der TO einmal prüft, ob er über ctime selektieren kann.

ctime ist auf der Synology denke ich nicht enthalten:
Usage: find [PATH]... [EXPRESSION]

Search for files. The default PATH is the current directory,
default EXPRESSION is '-print'

Rich (BBCode):
EXPRESSION may consist of:
        -follow         Follow symlinks
        -xdev           Don't descend directories on other filesystems
        -maxdepth N     Descend at most N levels. -maxdepth 0 applies
                        tests/actions to command line arguments only
        -mindepth N     Don't act on first N levels
        -name PATTERN   File name (w/o directory name) matches PATTERN
        -iname PATTERN  Case insensitive -name
        -path PATTERN   Path matches PATTERN
        -regex PATTERN  Path matches regex PATTERN
        -type X         File type is X (X is one of: f,d,l,b,c,...)
        -perm NNN       Permissions match any of (+NNN), all of (-NNN),
                        or exactly NNN
        -mtime DAYS     Modified time is greater than (+N), less than (-N),
                        or exactly N days
        -mmin MINS      Modified time is greater than (+N), less than (-N),
                        or exactly N minutes
        -newer FILE     Modified time is more recent than FILE's
        -inum N         File has inode number N
        -user NAME      File is owned by user NAME (numeric user ID allowed)
        -group NAME     File belongs to group NAME (numeric group ID allowed)
        -depth          Process directory name after traversing it
        -size N[bck]    File size is N (c:bytes,k:kbytes,b:512 bytes(def.))
                        +/-N: file size is bigger/smaller than N
        -links N        Number of links is greater than (+N), less than (-N),
                        or exactly N
        -print          Print (default and assumed)
        -print0         Delimit output with null characters rather than
                        newlines
        -exec CMD ARG ; Run CMD with all instances of {} replaced by the
                        matching files
        -prune          Stop traversing current subtree
        -delete         Delete files, turns on -depth option
        (EXPR)          Group an expression
 
Ok, dann kurz ein möglicher Workaround: Die Daten werden in einen Input-Ordner hochgeladen und dann mittels eines Shellskripts in das eigentliche Zielverzeichnis verschoben. Falls dabei immer noch der originale Timestamp erhalten bleibt, die Dateien vor dem Verschieben touchen. Wie kommen die Daten auf die DS? Per CloudStation oder FileStation?
 
Vielen Dank für eure Hilfe!

Ich habe mich jetzt dazu entschlossen, das über einen Windows-Server via Batch zu lösen - ist wohl die einfachste Möglichkeit, da Windows mit dem "Erstelldatum" (=Hochladedatum) umgehen kann.

Falls es jemand interessiert:

Rich (BBCode):
NET USE U: \\192.168.X.X\homes /User:username password

forfiles /p U:\ /s /d -30 /M *.* /c "cmd /c DEL /q @path"

NET USE U: /delete /yes
 
Auch ein Weg, danke für die Info!
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat