fehlerhafte Sonderzeichen im Dateinamen korrigieren

Wie Sie fehlerhafte Sonderzeichen in Dateinamen mit convmv korrigieren.

fehlerhafte Sonderzeichen in Dateinamen korrigieren

Offensichtlich durch eine Fehlkonfiguration bzw. fehlerhafte Dateinamenskonvertierung durch meinen alten Samba-Server befanden sich zahlreiche Dateien mit fehlerhaften Sonderzeichen im Dateinamen auf meinem Server.

Erfahrungsgemäß ist man nicht der Erste, der solche Probleme hat und erfreulicherweise gibt es in der GNU/Unix-Kommandozeilenwelt immer eine effektive Lösung für solche Probleme. In diesem Fall ist convmv genau das Richtige.

Eine übersichtliche Anleitung hat schon der Blogger David Greissler in seinem (leider nicht mehr existierenden und deshalb nicht mehr verlinkten) Antusblog geschrieben. Mehr gibt es dazu eigentlich nicht zu  sagen, außer vielleicht, dass in meinem Fall wohl in Samba 2 der iso-8859-15-Zeichensatz eingestellt war, weshalb die Lösung im Aufruf von

convmv -f iso-8859-15 -t utf-8 -r .

bestand.

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

Der Beitrag beschreibt wie man einen Papierkorb für Windows-Anwender bei einer Samba (CIFS)-Freigabe einrichtet. Der Papierkorb wird automatisch geleert, aber nur der Müll, der mindestens 14 Tage alt ist.

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.