Ситуация : есть много файлов с русскими названиями, все они были раньше доступны по самбе, теперь есть желание все это перевести под FTP. все русские названия были в кодировке cp1251, и в самбе читались отлично. Поставил FTP pureftpd-mysql, работает, только русское теперь в виде ![ учецбюпл ]! вместо ![ СВЕЖАЧОК ]!Желания переделать все файлы из cp1251 в koi8-r пока что особого нет. Ищу выход менее болезненного решения.
Пробовал поменять в /etc/enveroment LANG="ru_RU.KOI8-R" на ru_RU.cp1251 но не помогло, чего то я не догоняю.
Подскажите если кто знает - как можно решить мою задачу ?
>Ситуация : есть много файлов с русскими названиями, все они были раньше
>доступны по самбе, теперь есть желание все это перевести под FTP.
>все русские названия были в кодировке cp1251, и в самбе читались
>отлично. Поставил FTP pureftpd-mysql, работает, только русское теперь в виде ![
>учецбюпл ]! вместо ![ СВЕЖАЧОК ]!
>
>Желания переделать все файлы из cp1251 в koi8-r пока что особого нет.
>Ищу выход менее болезненного решения.
>
>Пробовал поменять в /etc/enveroment LANG="ru_RU.KOI8-R" на ru_RU.cp1251 но не помогло, чего то
>я не догоняю.
>
>Подскажите если кто знает - как можно решить мою задачу ?
1). если перекодировка в самбе настроена не была, то имена файлов в CP866, а не в CP1251 как вы подумали. Windows использует OEMCP для имен файлов.
2). а фтп-клиент, в котором хочется видеть имена нормально - тоже на винде?
что-то мне подсказывает (телепатия, мать ия) что если в фтп-клиенте читается "учецбюпл" - то на ФС линукса имя лежит как раз в koi
см "dos charset" и "unix charset" (samba 3+) или iocharset и codepage (samba 2.x) в smb.conf\^P^/
в самбе есть такие строкиdos charset = 866
unix charset = KOI8-Rда, фтп клиент на винде.
открываю SSH (puTTY) выставляю кодировку KOI8-R
читается нормально
меняю а WNDOWS-1251 читается также как и в ФТП на винде
создаю папку в кодировке WINDOWS-1251 на русском языке и в фтп она читается нормально.вот такая ситуевина. ЧТО МОЖНО СДЕЛАТЬ ?
>в самбе есть такие строки
>
> dos charset = 866
> unix charset = KOI8-R
>
>да, фтп клиент на винде.
>
>открываю SSH (puTTY) выставляю кодировку KOI8-R
>читается нормально
>меняю а WNDOWS-1251 читается также как и в ФТП на винде
>создаю папку в кодировке WINDOWS-1251 на русском языке и в фтп она
>читается нормально.
>
>вот такая ситуевина. ЧТО МОЖНО СДЕЛАТЬ ?
да уж непростая.
осложняется все, как я понял, тем, что фтп-клиент тупит, не понимет что OEMCP надо использовать для имен файлов. самое простое, что можно сделать в такой ситуации - переименовать файлы в код cp1251 (iconv + цикл на шеле или find -exec) и поставить в самбе unix charset=cp1251. однако выглядит это все довольно коряво. не перекодировать (строки * charset отсутствуют в smb.conf) было бы правильнее, но тогда нужен фтп-клиент, понимающий CP866 (читай "консольный" - командочка ftp в вындовсе и far подходят)\^P^/
>Подскажите если кто знает - как можно решить мою задачу ?Как вариант можно перейти на UTF-8.
Как раз в pure-ftpd, в последних версиях, есть параметрFileSystemCharset cp-1251
Но для этого необходимо включить поддержку RFC 2640 (пересобрать pure-ftpd с --with-rfc2640)
После этого все имена файлов будут отдаваться (и приниматься) в UTF-8, в соответствии с вышеуказанным RFC.
Один минус. Многие ftp клиенты пока еще не умеют работать с такими файлами. Хотя виндовый проводник и никсовый lftp справляются с ними отлично.
автору топика наверно уже поздновато, но пользующим поиск пригодиться :)> Как раз в pure-ftpd, в последних версиях, есть параметр
> FileSystemCharset cp-1251
Во-первых не cp-1251, а cp1251 (по крайней мере в 1.0.21)
Во-вторых у Andre.S файловой системе имена в KOI-8, такчто FileSystemCharset ему не cp1251 указывать нужно, а koi8-r
И наконец в-третьих, кроме FileSystemCharset есть еще замечательный параметр ClientCharset - это как раз то, что отдавать клиенту, не поддерживающему rfc2640.
Т.е. в данной ситуации нужно указатьFileSystemCharset koi8-r
ClientCharset cp1251и практически любой виндовый ftp-клиент правильно отобразит русские имена.
Дополнительно могу порекомендовать перегнать имена файлов из koi8 в utf8, чтобы избежать каких-либо напрягов с i18n имен файлов в дальнейшем. В самбе после этого соответственно пишем:
dos charset = 866
unix charset = UTF-8в pure-ftpd
FileSystemCharset utf-8
ClientCharset cp1251ps:
> если перекодировка в самбе настроена не была, то имена файлов в CP866, а не в CP1251 как вы подумали. Windows использует OEMCP для имен файлов.Если только винда не 9x, то это неверно. как минимум 2k+ всегда, когда может, использует юникод. И на самбовых разделах (unix charset = UTF-8) прекрасно уживаются например русские и немецкие (с умляутами там разными) имена файлов.
Не знаю, как у Вас, господа, у меня в pure-ftpd под SuSE Linux 11.1 кодировка ну никак не хотела меняться, пока названия таблиц не указал в верхнем регистре.FileSystemCharset UTF-8
ClientCharset CP1251После чего почти нормально заработало.
С Уважением к потерянному времени, ибо это приобретённый опыт :)
>Тогда почему у меня не пашет такая же схема на SUSE 11.0?Pure просто не запускается если ему указываешь:
FileSystemCharset UTF-8
ClientCharset CP1251Запускается вот так:
FileSystemCharset UTF-8
ClientCharset WINDOWS-1251
Но файлы не перекодирует
>[оверквотинг удален]
>
>Pure просто не запускается если ему указываешь:
>
>FileSystemCharset UTF-8
>ClientCharset CP1251
>
>Запускается вот так:
>FileSystemCharset UTF-8
>ClientCharset WINDOWS-1251
>Но файлы не перекодируетА где это указывать? :) Обязательно программу переустанавливать, или можно это в конфиг-папку pure-ftpd закинуть как-то и просто перезапустить сервер?
>[оверквотинг удален]
>>FileSystemCharset UTF-8
>>ClientCharset CP1251
>>
>>Запускается вот так:
>>FileSystemCharset UTF-8
>>ClientCharset WINDOWS-1251
>>Но файлы не перекодирует
>
>А где это указывать? :) Обязательно программу переустанавливать, или можно это в
>конфиг-папку pure-ftpd закинуть как-то и просто перезапустить сервер?В файле pure-ftpd.conf в самом низу.
>[оверквотинг удален]
>>>
>>>Запускается вот так:
>>>FileSystemCharset UTF-8
>>>ClientCharset WINDOWS-1251
>>>Но файлы не перекодирует
>>
>>А где это указывать? :) Обязательно программу переустанавливать, или можно это в
>>конфиг-папку pure-ftpd закинуть как-то и просто перезапустить сервер?
>
>В файле pure-ftpd.conf в самом низу.OpenSuse 11.1
cat /etc/pure-ftpd/pure-ftpd.conf
...
FileSystemCharset UTF-8
ClientCharset WINDOWS-1251
...#/usr/sbin/pure-config.pl /etc/pure-ftpd/pure-ftpd.conf
Running: /usr/sbin/pure-ftpd -A -c10 -B -C15 -z -D -E -fftp -H -I15 -lpuredb:/etc/pure-ftpd/pureftpd.pdb -lpam -L20000:8 -m4 -s -U177:077 -u40 -x -r -i -j -k99 -G -Z -8UTF-8 -9WINDOWS-1251 -p30000:40000 -Y0
/usr/sbin/pure-ftpd: invalid option -- '8'
/usr/sbin/pure-ftpd: invalid option -- '9'WTF ?
>#/usr/sbin/pure-config.pl /etc/pure-ftpd/pure-ftpd.conf
>Running: /usr/sbin/pure-ftpd -A -c10 -B -C15 -z -D -E -fftp -H -I15
>-lpuredb:/etc/pure-ftpd/pureftpd.pdb -lpam -L20000:8 -m4 -s -U177:077 -u40 -x -r -i -j
>-k99 -G -Z -8UTF-8 -9WINDOWS-1251 -p30000:40000 -Y0
>/usr/sbin/pure-ftpd: invalid option -- '8'
>/usr/sbin/pure-ftpd: invalid option -- '9'
>
>
>
>WTF ?Видимо pure-ftpd собран без поддержки перекодировки файлов