- chalblog - https://blog.is-a-geek.org -

Papierkorb für Samba-Freigaben auf Ubuntu einrichten

Papierkorb für Samba-Freigaben auf Ubuntu einrichten [1]Als Sysadmin kennt man das Problem mit Usern, welche auf Netzwerkfreigaben munter darauf los löschen und danach jammern, dass die Dateien nicht im Papierkorb erscheinen. Egal wie oft man den Sachverhalt zu erklären versucht, eine Vielzahl dieser User wird diese Vorgehensweise nicht ändern. Abhilfe kann der in Samba (ab Version 3) enthaltene Netzwerkpapierkorb schaffen. Gelöschte Dateien werden vorläufig einfach in einen Ordner verschoben und nicht sofort gelöscht.

Die Funktionalität des Netzwerkpapierkorbs von Samba fristet ein eher unbeachtetes Dasein, obwohl er richtig eingesetzt eine gute Alternative zu stundenlangen Datenwiederherstellungsorgien ist.

Zu beachten ist natürlich, dass der Speicherbedarf etwas höher ausfällt und die Dateien im Papierkorb-Ordner nach einiger Zeit per Hand oder per Script gelöscht werden müssen. Ebenfalls erscheinen die auf der Freigabe gelöschten Elemente nicht im lokalen Papierkorb, sondern werden nur in den Papierkorbordner am jeweiligen Samba-Share verschoben.

Papierkorb erstellen

Der Papierkorbordner muss zuvor erstellt werden. Zu diesem Zweck wechseln wir in den freigegebenen Ordner (über SSH-Console) und erstellen dort den Ordner “.recyclebin”. Der Punkt vor dem Namen dient dazu, den Ordner zu verstecken.

mkdir .recyclebin

Danach öffnen wir mit Nano die Samba-Konfigurationsdatei, in welcher unsere Freigaben definiert sind:

sudo nano /etc/samba/smb.conf

Die Sharedefinitionen befinden sich meist am Ende der Datei und sehen ungefähr wie folgt aus:

[SHARE]
comment = Public Folder
path = /sharefolder
writable = yes
create mask = 0777
directory mask = 0777
force user = smbuser

Unter dieser Definition fügt man dann die Zeilen zur Aktivierung der Papierkorbfunktion ein. Diese müssen für jede Freigabe gesondert eingefügt werden (nano: speichern mit “Strg+o“, schließen mit “Strg+x”).

[SHARE]
comment = Public Folder
path = /sharefolder
writable = yes
create mask = 0777
directory mask = 0777
force user = smbuser

vfs object = recycle
        recycle:repository = .recyclebin
        recycle:keeptree = Yes
        recycle:touch = Yes
        recycle:versions = Yes
        recycle:maxsixe = 0

recycle:repository = .recyclebin

Hier wird der zuvor erstellte Ordner übergeben. Der Pfad ist relativ zum Shareordner, d.h. der Pfad des freigegebenen Ordners muss nicht angegeben werden.

recycle:keeptree = Yes

Die gelöschten Dateien werden mit der bestehenden Ordnerstruktur in den Papierkorb kopiert.

recycle:touch = Yes

Ändert beim Löschen den letzten Zugriffszeitpunkt auf den Löschzeitpunkt.

!! Diese Funktion muss für die Anleitung zum automatischen Leeren des Papierkorbs aktiviert sein. !!

recycle:versions = Yes

Werden zwei Dateien mit dem selben Dateinamen entfernt, wird mit Hilfe dieser Einstellung die zuvor gelöschte nicht überschrieben.

recycle:maxsixe = 0

Hier kann definiert werden, ab welcher Dateiegröße sofort gelöscht werden soll (0=deaktiviert).

Weitere Konfigurationsmöglichkeiten kann man hier [2] einsehen: http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2651247 [2]

Zum Abschluss startet man den Samba-Server neu:

sudo service smbd restart

Automatisches Leeren

Um nicht zu viele Datenleichen zu versammeln gibt es eine einfache Möglichkeit Dateien, die länger als 7 Tage im Papierkorb liegen automatisch zu löschen. Voraussetzung dafür ist ein aktiviertes “touch” des Sambapapierkorbs.

Zuerst öffnet man die Cron-Tabelle:

sudo crontab -e 

Dort fügt man am Ende diesen Befehl ein (nano: speichern mit “Strg+o“, schließen mit “Strg+x”):

10 5 * * * root find /PFAD/.recyclebin -atime +7 -print -exec rm -rf {} \;

Somit werden Dateien die vor mehr als 7 Tagen gelöscht wurden täglich um 5:10 entgültig entfernt.

 
 

Vielen Dank an die Entwickler und viel Spaß mit dem Netzwerkpapierkorb!