Samba mtime beim kopieren

abanev

Lt. Junior Grade
🎅Rätsel-Elite ’23
Registriert
Apr. 2013
Beiträge
313
Hallo an alle,

ich habe ein Problem mit meinem Samba Shares.(Linux RHEL 6 Server, Samba 3)
Ich habe ein historisch gewachsenes Share, wo jeder seine Dateien ablegt und das ganze so zur Dateimüllhalde verkommt.

Also wollte ich kurze 15 machen. Share wird auf readonly gesetzt, neues Share erstellt und die User zum aufräumen gezwungen (neues Share ist nur noch halb so groß, spielt sich alles auf dem selben Server ab).

Auf dem neuen Share sollten dann alle Dateien, welche länger als 14 Tage nicht modifiziert wurden, gelöscht werden.

Easy going. find mit mtime +14, und dann ein exec rm.

Klappt wunderbar, mein aber kommt aber jetzt.

Kopiere ich (kopiert wird über Windows) auf das Share Dateien, wird die mtime nicht aktualisiert, er behält die originale mtime der Dateien. Kopiere ich Datei A in eine neue Datei B wird die mtime aktualisiert (logisch, ist ja ne neue Datei).

Nächster Gedanke war, ich arbeite mit der atime. Kopiere ich die Datei auf das neue Share und öffne sie, so müsste sich da die Access Time ändern. Macht Sie aber nur beim ersten öffnen der Datei. Schliesse ich Sie wieder und öffne Sie erneut, ändert sich die atime nicht.

Hat irgendwer eine Idee, wie ich Dateien automatisch löschen kann, welche seit 14 Tagen nicht geändert oder geöffnet wurden?

Vielen Dank.

abanev

Anbei noch meine smb.conf

Code:
[global]
    workgroup = DOMÄNE
    comment = Samba Share on UNIX (%h)
    server string = Samba (%v)

    # Erforderlich damit wide links funktionieren, sicherheitsrelevant
    unix extensions = no

    # Dateinamen nicht verkuerzen, Gross-/Kleinschreibung beibehalten
    mangled names = no
    preserve case = yes
    short preserve case = yes

    log level = 1
    max log size = 100

    # Keine master browser Funktion, keine LM announces broadcasten
    os level = 0
    preferred master = no
    domain master = no
    local master = no
    lm announce = no

    # Ausschliesslich NTLM v2 verwenden
    lanman auth  = no
    ntlm auth = no
    client lanman auth = no
    client ntlmv2 auth = yes

    server signing = auto
    min protocol = NT1

    NIS homedir = Yes
    homedir map = auto.home

    # Keine Druckerunterstuetzung
    load printers = No
    printcap name = /dev/null
    show add printer wizard = No

    # username map bei Linux und SunOS
    username map = /etc/samba/ntuser

    unix charset = ISO-8859-1

    # NetBIOS und WINS Unterstuetzung deaktivieren, nmbd wird nicht benoetigt
    wins support = no
    disable netbios = yes

    # Linux spezifische Pfade
    log file = /var/log/samba/log.%m

    # Active Diretory Modus mit Kerberos Unterstuetzung
    security = ADS
    realm = DOMÄNE
    max xmit = 32767

[SHARE]
comment = blabla
path = /Pdad/zum/Share
valid users = @Gruppe1
#read list =
#write list =
#invalid users =
browseable = yes
readonly = no
writeable = yes
veto files = /*.Dateiendung
#force group = 
force create mode = 0755
force directory mode = 0755
 
Ich glaub mit "touch" ist das lösbar, oder "find xxxxxxxxx -atime +7 -print -exec rm -rf {} \;" , aber bin mir da nicht 100% sicher aber so läuft es bei mir.
Ergänzung ()

Das hab ich im Netz gefunden "-mtime +xx -type f -exec /bin/rm {} \;"
 
Das Problem ist ja nicht, dass er nichts findet, sondern das ich wenn ich mit stat die Zeiten überprüfe falsche Ergebnisse kriege.

Beispiel:
Datei liegt auf alten Share

Access: 2016-01-07 14:51:37.436402134 +0100
Modify: 2016-01-07 14:51:37.436402100 +0100
Change: 2016-01-07 14:52:33.681625362 +0100

Ich kopiere die Datei aufs neue Share

Access: 2016-01-08 08:20:04.801164690 +0100
Modify: 2016-01-07 14:51:37.436402100 +0100
Change: 2016-01-08 08:20:04.807164669 +0100

Es gab eine ctime Änderung, aber nur, weil die Shareeinstellungen sagen force create mode 755. Hätte die Datei 755 bereits gehabt, hätte sich die ctime auch nicht geändert.

Ich öffne die Datei

Access: 2016-01-08 08:20:04.801164690 +0100
Modify: 2016-01-07 14:51:37.436402100 +0100
Change: 2016-01-08 08:20:04.807164669 +0100

Logischerweise ändert sich die Access Time. Ich schliesse die Datei ohne zu speichern und die neue Access Zeit bleibt.

Ich öffne die Datei erneut

Access: 2016-01-08 08:20:04.801164690 +0100
Modify: 2016-01-07 14:51:37.436402100 +0100
Change: 2016-01-08 08:20:04.807164669 +0100

und diesmal ändert er die Access Time komischerweise nicht.
Ich schreibe was in die Datei rein und speichere ab

Access: 2016-01-08 08:20:04.801164690 +0100
Modify: 2016-01-08 08:23:42.053649549 +0100
Change: 2016-01-08 08:23:42.052335004 +0100

Ich öffne die Datei erneut und die Access Time ändert sich nicht.

Habe aber jetzt eine für mich funktionierende Lösung gefunden. Da er beim draufkopieren die Change Time anpasst, werde ich also die -ctime +14 beim find nutzen und so müsste er alle Dateien fnden können.
 
abanev schrieb:
Ich öffne die Datei erneut

Access: 2016-01-08 08:20:04.801164690 +0100
Modify: 2016-01-07 14:51:37.436402100 +0100
Change: 2016-01-08 08:20:04.807164669 +0100

und diesmal ändert er die Access Time komischerweise nicht.
Wohl weil das Filesystem mit relatime gemountet ist, was Voreinstellung ist. Nur mit strictatime würde er sie ändern. (man 8 mount)
 
mensch183 schrieb:
Wohl weil das Filesystem mit relatime gemountet ist, was Voreinstellung ist. Nur mit strictatime würde er sie ändern. (man 8 mount)

Dank dir, das wird es sein. Wir mounten unsere Shares immer mit defaults in der fstab.
Ich werd das mal in der Testumgebung ausprobieren und dann mal sehen ob ich ctime oder atime als Kriterium wähle.
 
Zurück
Oben