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.