Linux: Dateisystem ohne Berücksichtigung der Groß- und Kleinschreibung

13

Welche Methoden gibt es, um das Linux-Dateisystem case-INSENSITIVE zu machen?

Ich habe asp.net-Anwendungen auf Windows entwickelt, aber es gibt immer Probleme mit der Groß- / Kleinschreibung auf Mono, wenn Sie es auf Linux setzen.

Eine Möglichkeit besteht darin, eine lokale Host-SMB-Freigabe in / var / www bereitzustellen. Gibt es noch andere?

Dilemma
quelle
14
Wäre es nicht einfacher, die Anwendung zu reparieren, als das Betriebssystem zu hacken, um die kaputte Anwendung zu umgehen?
Aaron Tate
2
Wird diese Web-App über Apache bereitgestellt, können Sie mod_speling verwenden.
Zoredache
2
Dies klingt wie ein ziemlich offensichtlicher Fall von "Oder Sie können Ihren Webentwicklern beibringen, dass sie mit ihren Dateinamen übereinstimmen, wenn es um Schmerz geht"
Shadur

Antworten:

15

Wenn Sie NUR in Apps, die unter Mono ausgeführt werden, von Groß- / Kleinschreibung sprechen, können Sie die IOMAPUmgebungsvariable verwenden, um Mono anzuweisen, Groß- / Kleinschreibung zu ignorieren, genau wie Windows.

Einzelheiten zur Verwendung finden Sie hier: http://www.mono-project.com/IOMap

tylerl
quelle
15

Es gibt einen ext3-Treiber , bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird , aber ehrlich gesagt, würde es mich ein bisschen erschrecken, so etwas in der Produktion laufen zu lassen, da Sie Ihren eigenen Kernel mit gepatchten Treibern rollen. (Ja, ja - wir haben das die ganze Zeit "damals" gemacht, aber das war 1997 ...)

Es gibt eine FUSE-Implementierung, ciopfs , die auch Groß- und Kleinschreibung berücksichtigt . Das wäre für mich in der Produktion viel weniger beängstigend als ein gepatchter Kernel.

Sie können für die /var/wwwOrdnerhierarchie auch ein Dateisystem verwenden, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, z. B. VFAT . In diesem Fall würde ich ein Loopback-Mount verwenden, damit Sie sich nicht mit Ihrer Festplattenpartitionierung herumschlagen müssen.

Evan Anderson
quelle
Ciopfs ist Mist, ich habe es versucht, es nur Kleinbuchstaben zu Kleinbuchstaben zuordnen, Großbuchstaben ignorieren ...
Quandary
1
@Quandary Run awk '/^ciopfs/ {print $2}' /proc/mountsund das gibt den Namen des zu verwendenden Verzeichnisses aus. Nach dem Ausführen ciopfs a/ b/sollten Sie unter keine Dateien mehr aufrufen oder ändern a/.
@Quandary Die Einschränkung in Kleinbuchstaben steht direkt auf der Projektseite und ist ziemlich offensichtlich. Haben Sie versucht, sie zu verbessern, um Ihren Anwendungsfall oder zumindest RTFM vor der Verwendung zu verarbeiten?
Michael Shigorin
8

Nekromanzierung.
Beantwortung meiner eigenen Frage.
Das ist in der Tat möglich.
Variante 1:
Erstellen Sie eine .dsk-Datei der Größe X-MB (mit dd) und erstellen Sie ein JSF-Dateisystem für diese Datei mit der Option O (OS2-Kompatibilität - Groß- und Kleinschreibung wird nicht beachtet). Hängen Sie diese Datei dann per
Loop in einen gewünschten Ordner ein .

(apt-get install jfsutils)
dd if=/dev/zero of=jfs.dsk bs=1048576 count=150
mkfs.jfs -O jfs.dsk
mkdir -p /mnt/jfs
mount /volumes/jfs.dsk /mnt/jfs -t jfs -o loop
umount /mnt/jfs/

Variante 2:
Wenn Sie das Betriebssystem installieren, partitionieren Sie den Datenträger manuell und erstellen Sie eine weitere Partition im Format JFS, die Sie an der gewünschten Stelle bereitstellen können.
Wenn alles läuft, können Sie diese Partition mit neu formatieren.

Hängen Sie die gemountete Partition aus

umount /web

Neuformatierung:

mkfs.jfs -O /dev/hda5

Hängen Sie die Partition erneut ein

mount /dev/hda5 /web

Jetzt lauf

blkid

und du bekommst die neue partition-uuid.
Gehen Sie nun zu / etc / fstab und ersetzen Sie die alte UUID für / dev / hda5 durch die neue.

Wenn Sie dies falsch machen, lesen Sie auch
Willkommen im Notfall-Boot-Modus.

Dilemma
quelle
Sie beschäftigen sich also seit siebeneinhalb Jahren damit?!?! Sie würden jetzt denken, dass die "Entwickler", mit denen Sie es zu tun haben, es aus der Grundschule geschafft haben.
Andrew Henle
2
@ Andrew Henle: Nein, wir haben tatsächlich eine andere Lösung gewählt - eine Windows-Partition mit Groß- und Kleinschreibung (ext3). Jetzt ist das Problem mit .NET Core wieder aufgetaucht, und dies ist die Lösung, die ich mir ausgedacht habe. Jetzt habe ich eine Linux-Partition, bei der die Groß- und Kleinschreibung nicht beachtet wird, ohne dass Fuse / Ciops, Smb, HFS / Hpfs +, gehackte ExtX-Fs, Loop-Mount oder ähnliches benötigt werden. Das ist der richtige Weg. Und bis jetzt hat niemand die Frage in den letzten 7 Jahren zufriedenstellend beantwortet, also dachte ich mir, dass ich es tun würde.
Quandary