Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Неправильный регистр названия файлов и папок(fat)


Автор: En_t_end 26.8.2008, 21:30
Сразу привожу /etc/fstab (Gentoo 2008) - локаль ru_RU.UTF-8
Код

# /etc/fstab: static file system information.
#
# noatime turns off atimes for increased performance (atimes normally aren't
# needed; notail increases performance of ReiserFS (at the expense of storage
# efficiency).  It's safe to drop the noatime options if you want and to
# switch between notail / tail freely.
#
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# See the manpage fstab(5) for more information.
#

# <fs>                  <mountpoint>    <type>          <opts>                                  <dump/pass>
/dev/sda3               /               reiserfs        notail,noatime                                  0 1
/dev/sda6               /mnt/K          ntfs-3g         exec,rw,users,locale=ru_RU.UTF-8                0 0
#/dev/cdrom             /mnt/cdrom      auto            noauto,users                                    0 0
/dev/fd0                /mnt/floppy     auto            noauto,users                                    0 0
/dev/sdb1               /mnt/key        auto            iocharset=cp1251,users,noauto                   0 0
proc                    /proc           proc            defaults                                        0 0
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec                             0 0

Проблема в следующем. Пытаюсь примонтировать ту самую /dev/sdb1 (флешка fat32)
На флешке с первого взгляда все впорядке, однако некоторые файлы и директории имеют иной регистр в сравнении с тем как я их называл под виндой. Причем попытки переименовать их невозможны(такой файл уже существует), т.е здесь регистр важен видимо smile 
Меня это не напрягало, если бы я не использовал программу для синхронизации, которая дуреет и сносит мне половину файлов и директорий, так как для неё регистр имеет значение.

Автор: Imple 26.8.2008, 21:47
Такая проблема есть, да. Кроется в том, что имена файлов, умещающееся в 8:3, linux  не берет из "длинного имени", которое появилось в offtopic 95. К примеру, "длинное" Program Files, отмеченное в FS под коротким именем как PROGRA~1, система поймет как надо - "Program Files". А вот уже "FiLe.TxT", так как оно вмещается в 8:3, поймется как "file.txt", потому, что, при проектировании файловой системы FAT, никто не задумывался о длинных именах или регистре букв. Решение одно - абсолютно недокументированный параметр force_long при монтировании файловой системы vfat. Если есть опыт программирования, читайте /usr/src/linux/fs/vfat/namei.c

Автор: En_t_end 27.8.2008, 08:09
Цитата(Imple @  27.8.2008,  01:47 Найти цитируемый пост)
Такая проблема есть, да. 

Сколько уже лет этому багу ?  smile 
PS я скорее подумываю о том, чтобы отфторматировать флеш в ntfs.
МММ... версию ядра смотрим:
Код

pasha@blackrainbow ~ $ uname -a
Linux blackrainbow 2.6.25-gentoo-r7 #1 SMP Thu Aug 21 12:53:10 UTC 2008 i686 Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz GenuineIntel GNU/Linux

Теперь смотрим:
Код

pasha@blackrainbow ~ $ cat /usr/src/linux/fs/vfat/namei.c | grep force_long
pasha@blackrainbow ~ $ 

Вывод: force_long в данном сырце не используется.
Теперь смотрим заголовок сырца:
Код

/*
 *  linux/fs/vfat/namei.c
 *
 *  Written 1992,1993 by Werner Almesberger
 *
 *  Windows95/Windows NT compatible extended MSDOS filesystem
 *    by Gordon Chaffee Copyright (C) 1995.  Send bug reports for the
 *    VFAT filesystem to <chaffee@cs.berkeley.edu>.  Specify
 *    what file operation caused you trouble and if you can duplicate
 *    the problem, send a script that demonstrates it.
 *
 *  Short name translation 1999, 2001 by Wolfram Pienkoss <wp@bszh.de>
 *
 *  Support Multibyte characters and cleanup by
 *                              OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
 */

Интересна строчка 
Цитата

Short name translation 1999, 2001 by Wolfram Pienkoss <wp@bszh.de>

Не есть ли это, решением моей проблемы ? 
ЗЫ а параметр действительно недокументирован, гугление дало несколько страниц, несколько содержало патчи для ядра 2.2.*(из этого я сделал вывод, что там этот параметр действительно использовался), несколько - такие же как эта страница.

Добавлено через 9 минут и 49 секунд
PS проверил при монтировании с force_long, 
Код

wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде

Автор: En_t_end 27.8.2008, 09:06
Починил, строчка в fstab:
Код

/dev/sdb1 /mnt/key vfat codepage=1251,iocharset=utf8,users,noauto 0 0


Автор: Imple 27.8.2008, 09:29
Нда, все оказывается оказалось совсем просто  smile 

Автор: En_t_end 27.8.2008, 10:09
Ы, пока с этим траблом боролся испортил себе файловую систему на флешке smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)