¿Sistema de archivos sin distinción entre mayúsculas y minúsculas para el servidor de producción?


10

La situación inicial se ve así:

  • El software corporativo está basado en PHP.
  • Apache 2 lo entrega en un servidor Windows 2003.
  • Es grande .
  • Es un legado de desarrolladores poco profesionales a los que no les importó la distinción entre mayúsculas y minúsculas o los separadores de directorios.

La situación deseada se ve así:

  • Todo migró a Apache 2 bajo una distribución de Linux de sabor aún indeciso.

Problema:

  • Un sinfín de toneladas de código sin preocuparse por el carácter de mayúsculas o minúsculas o separador de directorios.

Ya investigué un poco, pero desafortunadamente no encontré nada que fuera adecuado también para un entorno de producción. CIOPFSse ve bien pero está explícitamente destinado a no ser utilizado en sistemas de producción. ¿Pensarías que mod_spellingpara Apache sería una opción? La pregunta aún no resuelta para mí es si PHP accede a los archivos con la ayuda de ese módulo o directamente (lo que lo haría inútil).

¿Deberíamos tragarnos la amarga píldora y revisar todo el código? Nos gustaría evitar eso, ya que reemplazaremos el entorno de software actual pieza por pieza con material de compilación nuevo (a largo plazo).


Otra posibilidad podría ser crear algún tipo de proxy ( mod_rewrite) para la aplicación heredada (que reside en la configuración anterior) a través del nuevo servidor, reemplazando las partes de esta manera ... tal vez.
sr_

Hospédelo en OS X en lugar de Linux ... aún obtiene su entorno Unix, pero también obtiene un sistema de archivos que no distingue entre mayúsculas y minúsculas.
larsks

@sr_ Eso podría hacer el trabajo. Pero como estamos ejecutando un gran sistema de tienda en línea que ya causa suficiente tráfico, al menos lo duplicaría (no importa si la red es interna o externa). Hasta donde yo entiendo.
Peter

@larsks Aunque aliento a OS X para los negocios, ya no creo que tenga futuro como servidor web a gran escala. Además, nuestra empresa fomenta el uso de software de código abierto y se esfuerza por permanecer lo más independiente posible de la plataforma.
Peter

Solo una actualización: los módulos de Apache lamentablemente no están haciendo el trabajo, ya que solo se invocan en caso de solicitudes HTTP, la función de inclusión de PHP, por ejemplo, accede a los archivos directamente. Probaré el enfoque de samba mencionado a continuación ahora.
Peter

Respuestas:


3

Solo vea mi publicación aquí en ubuntuforums:

http://ubuntuforums.org/showthread.php?t=1497253

Crea un disco virtual

dd if=/dev/zero of=virtual.dsk bs=1048576 count=150

Formatearlo

mkfs.vfat virtual.dsk

Móntalo

sudo mkdir -p /mnt/vfat
sudo mount virtual.dsk /mnt/vfat -t vfat -o loop

PD: montaje permanente:

/path/to/virtual.dsk /mnt/vfat vfat loop,owner,group,umask=000 0 0

Junto con información adicional aquí: http://fatter-keine.dk/helptipsguides/ubuntu/understanding_fstab.html


3

Tanto ZFS como JFS se pueden configurar para que no distingan entre mayúsculas y minúsculas:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Editar (7 años después):

Como comentó @JorgeYanesDiez, el kernel de Linux finalmente agregó ext4 por directorio, insensibilidad de mayúsculas y minúsculas opcional a partir de la versión 5.2 y efsprogs 1.45.

Tenga en cuenta que Linus Torvalds estaba fuertemente en contra de la característica .


1
Para aquellos que vean esto en 2020, ext4 acaba de agregar soporte caseFold. Necesita Linux Kernel 5.2 y e2fsprogs 1.45 o posterior. Busque chattr + F
Jorge Yanes Diez

2

Puede usar Samba para compartir un sistema de archivos local sin distinción de mayúsculas y minúsculas ... este artículo tiene algunos detalles.


2
Esto es completamente loco, pero IMO es la menos loca de todas las otras opciones.
jgoldschrafe

@larsks Gracias, lo examinaré más a fondo y probaré cómo funciona.
Peter

@larsks Aunque seguí el artículo y probé algunas variaciones, lamentablemente no funcionó para nosotros. Gracias de cualquier forma. Terminamos decidiendo reescribir todas las cosas que no son sensibles al sistema de archivos, ya que otras alternativas parecen tomar demasiado tiempo.
Peter

1

Escriba su propio envoltorio de fusibles que distinga entre mayúsculas y minúsculas sobre cualquier otro fs? Con algún código de Python, esto podría hacerse rápidamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.