Sistem file case-insensitive untuk server produksi?


10

Situasi awal terlihat seperti ini:

  • Perangkat lunak perusahaan berbasis PHP.
  • Itu disampaikan oleh Apache 2 pada Windows 2003 Server.
  • Itu besar .
  • Ini adalah warisan dari pengembang yang agak tidak profesional yang tidak keberatan dengan sensitivitas kasus atau pemisah direktori.

Situasi yang diinginkan terlihat seperti itu:

  • Semuanya bermigrasi ke Apache 2 di bawah distribusi Linux dengan rasa yang belum diputuskan.

Masalah:

  • Kode tak berujung tanpa peduli tentang sensitivitas case atau karakter pemisah direktori.

Saya sudah melakukan riset, tetapi sayangnya tidak menemukan apa pun yang cocok untuk lingkungan produksi. CIOPFSterlihat bagus tetapi secara eksplisit dimaksudkan untuk tidak digunakan pada sistem produksi. Apakah Anda berpikir mod_spellinguntuk Apache akan menjadi pilihan? Pertanyaan yang belum terselesaikan bagi saya adalah, apakah PHP mengakses file dengan bantuan modul itu atau secara langsung (yang akan membuatnya tidak berguna).

Haruskah kita menelan pil pahit dan membaca semua kode? Kami ingin menghindarinya, karena kami akan mengganti lingkungan perangkat lunak saat ini sepotong demi sepotong dengan barang-barang build baru (dalam jangka panjang).


Kemungkinan lain adalah membuat semacam proxy ( mod_rewrite) untuk aplikasi lawas (yang berada di pengaturan lama) melalui server baru, mengganti bagian-bagian dengan cara ini ... mungkin.
sr_

Host di bawah OS X bukannya Linux ... Anda masih mendapatkan lingkungan unix Anda, tetapi Anda juga mendapatkan case sistem case sensitif.
larsks

@ Sr_ Itu bisa melakukan pekerjaan. Tetapi karena kami menjalankan sistem toko online besar yang telah menyebabkan lalu lintas yang cukup seperti itu, setidaknya akan berlipat ganda (tidak masalah jika jaringan internal atau eksternal). Sejauh yang saya mengerti.
Peter

@ larsks Meskipun saya mendorong OS X untuk bisnis, saya tidak berpikir lagi bahwa ia memiliki masa depan sebagai server web untuk skala besar. Juga perusahaan kami mendorong penggunaan perangkat lunak open source dan berusaha untuk tetap sebagai platform independen mungkin.
Peter

Hanya pembaruan: modul apache sayangnya tidak melakukan pekerjaan karena hanya dipanggil jika ada permintaan HTTP, PHP menyertakan fungsi misalnya mengakses file secara langsung. Saya akan mencoba pendekatan samba yang disebutkan di bawah sekarang.
Peter

Jawaban:


3

Lihat saja posting saya di sini di ubuntuforums:

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

Buat disk virtual

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

Format itu

mkfs.vfat virtual.dsk

Pasang itu

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

PS: Dudukan secara permanen:

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

Seiring dengan informasi tambahan di sini: http://fatter-keine.dk/helptipsguides/ubuntu/understanding_fstab.html


3

Baik ZFS dan JFS dapat dikonfigurasikan menjadi case-sensitive:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Edit (7 tahun kemudian):

Seperti yang dikomentari @JorgeYanesDiez, kernel Linux akhirnya menambahkan ext4 per direktori, ketidaksensitifan case opsional mulai dari versi 5.2 dan efsprogs 1.45.

Perhatikan bahwa Linus Torvalds sangat menentang fitur tersebut .


1
Bagi mereka yang melihat ini pada tahun 2020, ext4 baru saja menambahkan dukungan caseFold. Anda memerlukan Linux Kernel 5.2 dan e2fsprogs 1.45 atau lebih baru. Cari chattr + F
Jorge Yanes Diez

2

Anda dapat menggunakan Samba untuk berbagi sistem file lokal dalam kasus yang tidak sensitif ... artikel ini memiliki beberapa detail.


2
Ini benar-benar gila, tetapi IMO yang paling tidak gila dari semua opsi lain.
jgoldschrafe

@ larsks Terima kasih, saya akan melihat lebih dalam dan akan mencoba cara kerjanya.
Peter

@ larsks Meskipun saya mengikuti artikel dan mencoba beberapa variasi, sayangnya tidak berhasil bagi kami. Terima kasih. Kami akhirnya memutuskan untuk menulis ulang semua hal yang tidak dalam hal sistem file sensitif karena alternatif lain tampaknya memakan waktu terlalu banyak.
Peter

1

Tuliskan pembungkus sekering Anda sendiri yang tidak peka terhadap huruf besar-kecil? Dengan beberapa kode python ini bisa dilakukan dengan cepat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.