Papierkorb für Windows-User auch mit Samba-Server-Freigabe

Wie wär´s mit einem Papierkorb der selbst täglich (nur) alten Müll entfernt?

Wer als Dateiserver für Windows-Benutzer einen Samba-Server nutzt, der muss auch auf den Papierkorb nicht verzichten. In meiner Agentur ist der Papierkorb so konfiguriert, dass die gelöschten Dateien bestimmter Netzwerkfreigaben in einem Ordner mit Namen .Papierkorb landen und zwar in dem Unterordner des Nutzers, der die Datei gelöscht hat. Ein weiterer Vorteil dieser Konzeption ist, dass man den Papierkorb automatisch per cronjob löschen kann. Bei mir werden Dateien im Papierkorb, die älter sind als 14 Tage, gelöscht – sozusagen ein Papierkorb in dem immer nur die alten Dokumente ausgeleert werden.

Der Papierkorb ersetzt natürlich KEINE Datensicherung, ist aber hilfreich wenn versehentlich durch Benutzer Dateien oder Ordner gelöscht werden.

Wie gehts?

Grundsätzlich kann mit dem VFS-Modul recycle seit Samba 3 ein Papierkorb realisiert werden. Samba gibt jede Anfrage an das UNIX-Filesystem durch das geladene VFS-Modul weiter. Mit VFS-Modulen kann z.B. auch ein Virenscanner eingebunden werden, der die Dateien der Netzwerkfreigabe auf Viren untersucht, dies ist aber NICHT Thema dieses Beitrags.

Wie alle Samba-Konfigurationen, wird auch das VFS-Modul recycle in der /etc/samba/smb.conf konfiguriert. Man kann die Einstellung entweder innerhalb eines einzelnen Shares oder global für alle Freigaben vornehmen.

In unserem Fall wird für den Samba-Share projekte ein Papierkorb eingerichtet. Der komplette Share-Eintrag lautet:

[projekte]
 comment = Projekte und Daten von Kunden, Lieferanten
 path = /home/hadiag/projekte
 read only = No
 create mask = 0775
 directory mask = 0775
 vfs object = recycle
 recycle:repository = .Papierkorb/%U
 recycle:keeptree = yes
 recycle:exclude = *.tmp *.temp *.swp *.o *.obj ~s* Backup* AUTOBACKUP*
 recycle:exclude_dir = /tmp /temp /cache /.Cache /.cache
 recycle:touch = yes
 

Damit alle Benutzer in das Verzeichnis .Papierkorb „schreiben“ also Dateien löschen können, müssen sie dort Schreib- und Ausführrechte haben.

Wer möchte, dass der Inhalt des Papierkorbs regelmäßig gelöscht wird, kann dies mit einem Cronjob erreichen, etwa:

#!/bin/sh
 # Alle Dateien in den Verzeichnissen mit Namen .Papierkorb die älter sind als 14 Tage sollen gelöscht werden.
 # Diese Dateien sind mit Samba-Clients gelöschte Dateien (siehe smb.conf).
 find /home -type f -wholename "*/.Papierkorb/*" -ctime +14 -exec rm "{}" \;
 

So, nun bleiben nur noch viele, viele leere Verzeichnisse übrig. Auch die möchte man löschen. In meinem Beispiel befinden sich die .Papierkorb-Verzeichnisse alle irgendwo unterhalb von /home. Mit dem folgenden Befehl lösche ich die Verzeichnisse die dort so heißen, und leer sind:

find /home -depth -type d -empty -wholename "*/.Papierkorb/*" -exec rmdir "{}" \;

ACHTUNG mit rm sollte man nur umgehen, wenn man weiß was man tut, siehe „man rm“; Zum Test des obigen Kommandos empehle ich -exec durch -ok zu ersetzen – so muss man jedes Kommando bestätigen. Nutzung obiger Angaben wie immer ohne Gewähr.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert