Der Papierkorb für Windows ist eine unleugbar nützliche Sache. Leider arbeitet er nicht mit Netzlaufwerken zusammen, die man zum Beispiel per Samba eingebunden hat.
Aber man kann für Samba selbst einen Papierkorb installieren und versehentlich gelöschte Dateien daraus retten.
Zunächst bearbeiten wir die Konfigurationsdatei von Samba.
sudo nano /etc/samba/smb.conf
Ans Ende des betreffenden Absatzes, der mit [NAME] startet, fügen wir etwas hinzu.
vfs object = recycle recycle:repository = .recyclebin recycle:keeptree = Yes recycle:touch = Yes recycle:versions = Yes recycle:maxsixe = 0 recycle:exclude = *.tmp,*.temp,*.TMP,*.TEMP,*.log recycle:excludedir = /recycle,/tmp,/temp,/TMP,/TEMP
Insgesamt sieht es (ungefähr) so aus:
[www] path = /var/www/ public = yes writable = yes comment = smb share printable = no guest ok = yes create mode = 0644 directory mode = 0755 force group = www-data force user = www-data vfs object = recycle recycle:repository = .recyclebin recycle:keeptree = Yes recycle:touch = Yes recycle:versions = Yes recycle:maxsixe = 0 recycle:exclude = *.tmp,*.temp,*.TMP,*.TEMP,*.log recycle:excludedir = /recycle,/tmp,/temp,/TMP,/TEMP
Die Einträge dürften sich größenteils von selbst erklären. Aber hier noch einmal eine kleine Erläuterung.
recycle:repository = .recyclebin
Das ist der Ordner, der uns als Papierkorb nutzen wird. Er wird beim ersten Löschvorgang mit den richtigen Rechten angelegt. Bei diesem Beispiel: /var/www/.recyclebin
recycle:keeptree = Yes
Die Ordnerstruktur wird in den Papierkorb übernommen. Kann nicht schaden, weil es die Suche einfacher gestaltet.
recycle:touch = Yes
Setzt den letzten Zugriffszeitpunkt auf das Löschdatum. Das ist wichtig, da beim automatischen Leeren eines zu vollen Papierkorbes zu alte, versehentlich gelöschte Dateien sofort entsorgt werden. Wer den Papierkorb nicht automatisch leert, der kann die Option auch weglassen.
recycle:versions = Yes
Für eine Versionierung namensgleicher Dateien.
recycle:maxsixe = 0
Ab welcher Dateigröße soll der Papierkorb nicht gelten und stattdessen sofort gelöscht werden. 0 steht für keine Beschränkung.
recycle:exclude = *.tmp,*.temp,*.TMP,*.TEMP,*.log
Welche Dateien sollen vom Papierkorb ausgeschlossen werden und stattdessen sofort gelöscht werden? Ich empfehle neben den üblichen Verdächtigen wie „tmp“ und „log“ auch Binärdateien, die immer Resultat von anderen Dateien sind, und somit aus der Quelle selbst rekonstruiert werden können. JPEG-Dateien kann man z.B. aus den Photoshop-Dateien wieder herstellen.
recycle:excludedir = /recycle,/tmp,/temp,/TMP,/TEMP
Welche Ordner sollen vom Papierkorb ausgeschlossen werden? Hier gelten anlog meine Anmerkungen zu oben. Mehr Einstellungsmöglichkeiten werden hier: https://www.samba.org/… erläutert.
Zum Schluss starten wir den Samba-Server neu
sudo /etc/init.d/samba restart
Von nun an sollten alle Dateien und Ordner im geteilten Verzeichnis vor versehentlichen Löschen geschützt sind. Sie finden Sie nun, samt Verzeichnisstruktur, unter /var/www/.recyclebin
Test
Bitte unbedingt testen, denn exotische Rechtevergabe kann auch dazu führen, dass der Papierkorb schlicht nicht funktioniert.
VORSICHT: Damit keine Missverständnisse aufkommen, es werden natürlich nur die Dateien in den Papierkorb befördert, die über Samba gelöscht werden, also bspw. von einem unvorsichtigen Windows-Nutzer. Dateien, die direkt über die Shell oder über Skripte gelöscht werden, bleiben davon unberührt und landen weiterhin im Unix-Nirvana.
Automatisches Leeren des Papierkorbes
Das erledigt natürlich cron für uns.
sudo crontab -e
Ans Ende setzen wir folgenden Eintrag für root:
01 00 * * * find /var/www/.recyclebin -mindepth 1 -atime +7 -print -exec rm -rf {} \;
Dann werden täglich um 00:01 alle Dateien und Ordner im Papierkorb gelöscht, die älter als sieben Tag sind. Das “ -mindepth 1″ verhindert, dass der Papierkorb selbst gelöscht wird, wenn er älter als sieben Tage ist.
Danke
Mein Dank geht an http://blog.is-a-geek.org/… für die Anregungen.