Charset Wars & 'fdupes'

Mein heutiger Tag stand ganz im Zeichen dessen, was ich in leicht ironischer weise Charset Wars getauft habe. Ursache des ganzen ist eine Fernstersfreigabe, auf die offensichtlich mit verschiedenen Fenstersversionen und auch Apfelgeräten zugegriffen wird. Das wäre ja auch alles ganz wunderbar (weil es überhaupt funktioniert), wenn all diese Geräte nicht der Meinung wären, mit ihrem lokalen Charset die Weltherrschaft anstreben zu müssen. UTF8 scheint hier noch nicht eingezogen zu sein.

Den Server interessiert das erst mal gar nicht. Er schreibt die Zeichenketten einfach so hin, wie er sie erhält und das ist dann eben der Dateiname. Wer das gleiche Charset hat, der hat halt Glück.

So war es nicht weiter verwunderlich, dass ich haufenweise Kopien der gleichen Dateien fand, die sich nur in unterschiedlich vermurksten Sonderzeichen in ihren Dateinamen unterschieden.

Für die Nutzer kam mit Fensters95 eine bisher nie da gewesene Freiheit. Plötzlich durften sie Dateinamen in gefühlt unbegrenzter Länge verwenden und sie sogar mit Leer- und Sonderzeichen durchsetzen.
In der Monokultur derer, mit denen man sporadisch Daten tauschte, fiel lange Zeit niemandem auf, dass die Hersteller heimlich nebenher, nach unterschiedlichen Rezepten, in vielen Töpfen kochten.

Der viel zu spät erfundene Einheitsbrei Namens UTF8 hat sich bis heute in vielen Küchen noch nicht durchgesetzt, oder man muss dem lokalen Koch per Hand die Rezepte vertauschen. So kommt es halt, dass ein Koch, der mit einem fremden Rezept kocht, aber die Zutaten nicht kennt, schon mal etwas den Geschmack verfehlt.

Genug der kulinarischen Analogien. Teilweise war es mir nicht möglich, herauszufinden, welche Charsets für die kryptischen Zeichen verantwortlich waren, die mein UTF8 mir da bot. Selbst wenn ich es gekonnt hätte, wäre nicht einmal das von Nutzen gewesen, da die Namen selbst in einzelnen Verzeichnissen unterschiedlichen Charsets entsprangen.
Keine Change, da mit skripten und Charsetkonvertern wie iconv oder recode etwas zu werden.

Letztendlich muss mich das auch nicht weiter stören. Die Mission, die Nutzer davon zu überzeugen, einfach keine Sonderzeichen zu verwenden, weil ihre lokalen Charsets dann irrelevant wären, habe ich seit langem aufgegeben.
Datenblätter sehen offensichtlich einfach viel schöner aus, wenn sie nicht Datenblaetter heißen.

Was mich als Admin aber stört, ist wenn verschiedene Nutzer die gleiche Datei mit lediglich unterschiedlichen Sonderzeichen in den Namen auf die Freigabe kopieren. Besonders, weil die Verlockung viel zu groß ist, an seiner eigenen Datei zu werkeln und sich dann bei mir zu beschweren, dass man die Änderungen der Kollegen nicht sehen kann.
Wie denn auch? Der Kollege hat eine andere Datei geÀndert!

Bei der Suche nach einem Programm, welches mir schnell und schmerzlos diese Dubletten identifiziert stieß ich auf fdups. Dieses nette kleine Programm ist nicht nur in der Lage, doppelte Dateien per Hash zu identifizieren, sondern auch wahlweise bei jedem Satz n-facher Kopien zu fragen, welche davon behalten werden soll.

Da ich keine Lust hatte, das für buchstäblich hunderte Dateien zu entscheiden (und damit womöglich jemanden wegen seines Charsets zu diskriminieren), entschied ich mich stattdessen für eine noch praktischere Variante: Alle Namen zu Hardlinks auf die selben Daten zu machen.
Dadurch verwenden jetzt alle Kopien den gleichen Speicherplatz, es wird also nichts mehr verschwendet, dennoch bleiben die Namen erhalten. Falls man sich später mal auf einen kompatiblen Namen einigt, können die Kopien einfach gelöscht werden. Der Festplattenspeicher wird erst freigeben, wenn der letzte Link gelöscht wird und es ist sicher gestellt, dass auch wirklich alle mit den gleichen Daten arbeiten.

Selbstverständlich habe ich eine Liste der Kopien bereitgestellt und über den Sachverhalt informiert und genauso selbstverständlich sind davon auch keine gewollten Sicherheitskopien betroffen.
Das wäre ja auch kontraproduktiv.