NTFS auslesen INKL Sonderzeichen und Umlaute ?!

m!cele

Active Member
Hey Volks, mir stellt sich gerade folgendes Problem:

Ich habe meinen Fileserver auf BSD 4.9 umgestellt (war vorher ein OS, welches hier keine weitere Beachtung erfahren sollte :cool: ) und habe jetzt ein problem. Die Platten liefen alle unter NTFS und ich habe nun auf UFS umgestellt. Nun habe ich gemerkt, dass BSD wohl nicht in der Lage ist Umlaute und Sonderzeichen auszulesen (zumindest nicht unter NTFS).
Praktisches Beispiel: Ich habe eine NFTS Platte auf eine UFS Platte kopiert und alle Files mit Sonderzeichen und Umlauten sind jetzt korrupt. Es ist aber definitiv ein NTFS Lesefehler, da die Dateinamen schon in der Console falsch angezeigt werden wenn ich auf der NTFS Platte browse.
Nun meine Frage: Wie kriege ich den NTFS Support so hin, dass er auch Sonderzeichen etc, ausließt und ich das alles vernünftig kopieren kann, OHNE das die daten dabei nachher hinüber sind ... ?!

dank euch schonmal
 
Also wenn ich auf meine eigenen Platte nen Blick werfe, ist die Anzahl Dateinamen mit Umlauten marginal - weshalb ich einfach mal unter Windows NT/2000/XP die Dateien umbenenne und dann Stressfrei von BSD aus kopiere.
 
aus genau diesen umständen habe ich es mir so, oder so eh angewöhnt dateinamen ohne umlaute und ohne leerzeichen zu verwenden. ich bin mir sicher dem rest geht es genauso. mir sträuben sich die haare wenn ich firmennetzwerke sehen muss in denen sowas erlaubt ist und sich die user dann wundern wenn ihre dateien öfters verloren gehen oder korrupt werden. man speichert doch zum beispiel eine bewerbung nicht unter "bewerbung an üzgür döners gmbh&ko. kg.doc" ab. es reicht immer noch "bewerbung_uezguer.txt".

klar hilft dir das jetzt herlich wenig, aber ehrlichgesagt ist mir sowas eh noch nie aufgefallen.
 
Es ist möglich, dass es ein Problem mit unterschiedlichen Zeichensätzen ist.
Windows verwendet gewöhnlich cp1250, dort befinden sich die Umlaute an anderer Stelle als in cp437 (oder war es cp850? egal...), was FreeBSD standardmäßig verwendet.
Stell mal deine Konsole auf ISO 8859-15 um, evtl. hilft das.
 
Du möchtest gerne die Manpage zu mount_ntfs lesen. Diese verweist an geeigneter Stelle auf die Manpage von mount_msdos. In dieser mögest du dir die Ausführungen zum Schalter -W genauer ansehen.

Einige andere Tipps hier finde ich aber auch lustig:

"Benutz einfach nur ganz bestimmte Zeichen deiner Tastatur" - Erstens unsinnig, dafür habe ich die Buchstaben schließlich, zweitens in großen Netzwerken nicht durchsetzbar (willst du den Leuten die "bösen Tasten" wegnehmen?) und drittens in diesem Falle eh zu spät - die Dateien haben diese Namen halt schon.

Zuletzt habe ich übrigens eine Datei namens "Direkte & Indirekte Erträge, KJ 98/99.sdc" in einem UFS-Dateisystem erstellt. Warum um alles in der Welt sollte ausgerechnet diese Datei "öfters verloren gehen oder korrupt werden"? Das ist ein Inode-Eintrag wie jeder andere auch. Ich lege solche Dateinamen seit mehreren Jahren an und mir ist noch keine "verloren" gegangen. Im Gegenteil: Dank vernünftige Dateinamensgebung finde ich die auch nach einiger Zeit noch ohne große Probleme wieder.

Das Umstellen der Konsole auf eine andere Kodierung dürfte wohl ziemlich nutzlos sein, weil man damit keine Zeichensätze zwischen NTFS- und UFS-Dateisystemen konvertieren kann. Nicht alles, was auf der Konsole gut aussieht, kommt im Dateisystem genau so an.
 
NTFS ist im Gegensatz zu FAT16/32 UNICODE-basierend. Für mehr
Informationen zu NTFS siehe => http://www.ntfs.com

Wenn Du nun Probleme bei der Darstellung von Dateinamen mit Sonderzeichen
auf NTFS-Partitionen hast, so sind zwei Gründe möglich:

1.) Du must mount_ntfs mitteilen, welchen Zeichensatz Du unter
FreeBSD brauchst. mount_ntfs konvertiert alle Dateinamen
von UNICODE in den lokalen/FreeBSD-Zeichensatz. Standart-
mässig verwendet mount_ntfs ISO8859-1.

Mit mount_ntfs -C <lokalen Zeichensatz> /dev/<Festplatte>
teilst Du mount_ntfs mit, welchen lokalen Zeichensatz Du
verwendest. Verwende nicht mount_ntfs -W, dieser Schalter
ist veraltet!

Du weisst nicht, welchen lokalen Zeichensatz Du verwendest?
Mit dem Befehl:

locale

findest Du es heraus.

2.) Dein lokaler Zeichensatz enthält gar nicht die zu darstellenden
Sonderzeichen. Im westeuropäischen Raum ist das selten ein
Problem, da ISO8859-9 und ISO8859-15 (ISO8859-9 mit Euro-Zeichen)
alle benötigten Zeichen enthalten. Alle diese ISO8859-Zeichensätze
haben einen grossen Nachteil, sie verwenden pro Zeichen 1 Byte
und können so pro Zeichensatz nur 256 Zeichen darstellen.

Deshalb wurde UNICODE ins Leben gerufen. UNICODE hat sich als
Ziel gesetzt, alle menschlichen Zeichen in einem Zeichensatz
zu fassen. Mehr Informationen zu UNICODE findest Du unter:

http://eyegene.ophthy.med.umich.edu/unicode/

Aus Kompatibilitätsgründen eignet sich für FreeBSD nur
der UNICODE-Zeichensatz UTF-8. Windows NT und höher, verwenden
übrigens intern UTF-16 (2 Byte-Zeichensatz).

Wenn Du jetzt aber zum Beispiel mit japanische oder chinesische
Zeichen arbeitest, so empfiehlt sich dringend eine Umstellung
des lokalen Zeichensatzes auf UTF-8. Nachfolgend wird die
Umstellung auf UTF-8 im Detail erläutert:

******************************************************************
* Wichtig: 1.) Viele Programme sind noch nicht UTF-8 kompatibel!
* Prominente Programme: mc, xterm, FreeBSD-Konsole
*
* 2.) Das FreeBSD-Dateisystem UFS verträgt den UNICODE-
* Zeichensatzwechsel nicht! Alle Dateinamen-
* Sonderzeichen gehen bei der UNICODE-Umstellung
* verloren!
******************************************************************

Erst unter FreeBSD 5.2-Current wird UTF-8 als lokaler Zeichensatz
angeboten. Bei FreeBSD 4.9 solltest Du aber den UTF-8-Zeichensatz
mit dem Port:

/usr/ports/misc/utf8locale

nachinstallieren können. Hast Du den UTF-8-Zeichensatz installiert,
so kannst Du mit:

locale -a

die Liste aller möglichen Lokalisierungen (engl. locale) anzeigen
lassen. Die Lokalisierungen sind immer nach dem gleichen Prinzip
aufgebaut:

<Sprache>_<Land>.<Zeichensatz> => de_CH.UTF-8

Jetzt musst Du nur noch die Lokalisierungen für alle Benutzer
ändern, rc.conf und den Kernel anpassen und neukompilieren.
Dazu musst Du im FreeBSD-Handbuch Kapitel 14 "Localization.."
nachschlagen oder im Forum nachfragen!

Viel Glück!
 
Zurück
Oben