LINUX.ORG.RU

Ext2/3 под Linux и Windows одновременно


0

0

предыстория: стал подыхать веник, на нем много информации, впридачу имена файлов на русском почти везде - файловая свалка юзеров. Под виндами раздел NTFS оказался недоступен - попытки чтения ведут к зависанию компа. Под линуксом читается на ура. Причем под Мандривой 2008 spring сначала попоробовал - полное Г - кодировку не могло уловить ни при каких комбинациях. Плюнул, постави веник на OpenSUSE 10.3 - все зараболтало с полпинка. Немцы работают как надо. Далее. Системная локаль cp1251 - так надо потому что в сетке половина компов на линуксе - половина на винде и идет постоянный файлообмен ка кпо шарам так и по фтп - нормально получается работать только на этой кодировке, да еще учитывая спецыфику программного обеспечения под винд.. в общем - только cp1251. варианты не предлагать.

Задача стала передо мной такая: перенести данные на другой веник. Но не просто перенести, а с заделом на будущее - переставив на этом компе винду на линукс (жду опенсусеку 11) хочу увидеть все свои данные в полной сохранности и с читабильными именами файлов. как я уже сказал - локаль 1251.

Что сделал: 0) поставил дрова Ext2IFS самые свежие. кодировку UFT отключил тем самым дав системе писать имена фавйлов в той кодировкой которая используется системой - то есть по идее 1251 в винде у меня.

1) Физически подсоединил оба веника к линуховой тачке с опенсусекой. На свежем - создал раздел ext3 чистый. Подсоединил NTFS раздел со старого винта через mount -t ntfs-3g -o force,codepage=cp1251 (\from) (\to) и скопировал инфу как есть с винта на винт. Глазами вижу что при виндовой локали в системе имена файлов и на ntfs разделе читабильны, и на новоскопированном. Отрубаю винт, ставлю на винду. Монтирую, даю буковку диску. Захожу - трындец! вид у русских букв крокозябильный. Выглядит так, как выглядит 866 текс когда его смотришь в кодировке 1251 или наоборот. В общем кодировки не совпали.. облом-с! ладно... 2) оставлю винт на виндовом компе. Чищу файлы. На линуксовом монтирую через /sbin/mount.cifs -o codepage=cp1251,username=(..),passwd=(..) \\comp\resurs /mnt/networkdrive копирую файлы по сети. На виндовой такчке файлы выглядят читабильно, имена нормальные русские. Отсоединяю веник от виндовой тачки и цепляю на линукс где локаль 1251. Подмонтирую раздел - все в порядке, ошибок не пишет.. но! мляць.. буковки крокозябельные! однозначно не UTF8 - он двухбайтовый, спутать нельзя, все как и в предыдущем опыте - точно как перепутанные 866 и 1251 :(

ВОПРОС: что же все-таки делать чтобы один и тот же веник виделся и там и там так как нужно? Пробовал указывать mount кодовую страницу, нлс и прочее - говорит что такое делать для Ext2/3 нельзя - я в печали. Как побороть? можно ли в Линуксе разные разделы хранить под разными кодировками? Может получится именно этот раздел вести в кодировке UTF8? - новый драйвер под эти разделы в линуксе позволяет правильно работать с UTF8. Только напомню - системную локаль в линуксе менять нельзя - проги перестают работать с сетевой базой данных!

Жду ответа очень-очень! Спасибо!


Ждем продолжение сериала.

З.Ы. многа букафф

sdio ★★★★★
()

vfat или абстену

anonymous
()

> кодировку UFT отключил тем самым дав системе писать имена фавйлов в той кодировкой которая используется системой - то есть по идее 1251 в винде у меня.

Кодировки UFO там нету?

>Физически подсоединил оба _веника_ к _линуховой_ тачке с _опенсусекой_.

Это ускоренный курс линексоида, явно.

Общий совет: читать маны, писать на ext2 в UTF8.

wfrr ★★☆
()

Простыни текста пациентов баттологического диспансера читать не буду.

anonymous
()

А к чему такие сложности? Недавно переносил данные с диска на диск с помощью gparted. Никаких проблем с кодировками замечено не было.

Tigger ★★★★★
()
Ответ на: комментарий от anonymous

это как раз таки не смешно и я спросил по делу. Просто перекопировать - это и дебил могет. благо разных партишин меджиков валом, да и тупо dd /dev/in /dev/out всегда работало безотказно. Дело не в этом. Дело в том что этот веник большого объема и прямо сейчас мне он нужен на винде, а потом спустя месяц резко переедет на линукс где системная локаль cp1251. И что мне при этом скажете - всю инфу по новой копировать на другой веник? а если нету больше веников да еще и такого большого объема? на счет манов - многа букафф, ниасилил. Конкретно спросил - какое есть решение именно в этой конкретной ситуации, и есть ли возможность в линухе с локалью 1251 хранить отдельный раздел с локалью UTF8 подключив его в fstab хитрым макаром?

SwitNJ
() автор топика
Ответ на: комментарий от SwitNJ

Благослови тебя Господь, сын мой!

Правду говорят, без женщин жить трудно, без дураков - невыносимо.

anonymous
()
Ответ на: комментарий от anonymous

Я понимаю что для вас, отец, много вещей выглядят очевидно, но показывать свое превосходство нужно среди равных, если уж так охота членами померяться. А мне любоваться красотой вашего полового органа, который вы сейчас выставили на обозрение как единственную свою гордость, возложенную на мою просьбу помочь - некогда. Посему смилуйтесь, и внемлите просьбам страждущих помочь в деяниях их, направив на путь истинный к скорейшему решению их проблем насущных. Ибо не тот силен кто слоабых обижает, а кто будучи сильным слабым помогает. Прискорбно читая форум в поисках отвиета на нужные тебе вопросы, находить эти ответы как алмазы во громадной куче навоза, коего исторгнуто немало такими как вы, братьями страдающими гордыней своей и незамечающего нелепости своей. Все также с нетерпением жду помощи от тех, чьи глаза не затмила пелена гордыни!

SwitNJ
() автор топика

>Системная локаль cp1251 - так надо потому что в сетке половина компов на линуксе - половина на винде и идет постоянный файлообмен ка кпо шарам так и по фтп - нормально получается работать только на этой кодировке, да еще учитывая спецыфику программного обеспечения под винд.. в общем - только cp1251.

Съешь еще этих мягких булочек, да выпей-ка йаду, раб божий!

utf в качестве системной локали, utf в настройках ext2ifs, cp1251 в настройках linuxdcpp, vsftpd-ext в качестве фтп-сервера в линаксе и _нигде_, _никогда_, никаких_ проблем с кодировкой

алсо, согласен с предыдущим анонимусом

Deleted
()

дык давно же известно, что венда на диск пишет имена файлов в 866-й кодировке.

как монтируешь веник в линухе?

Komintern ★★★★★
()
Ответ на: комментарий от Komintern

>> дык давно же известно, что венда на диск пишет имена файлов в 866-й кодировке. догадывался... но толку?

>> как монтируешь веник в линухе? mount -t ntfs-3g -o force,iocharset=cp1251 /dev/sdxx /mnt/mountpoint

что теперяче делать? реально ли прицепить к линуху ext2 раздел в кодировке 866 ? сдуреть можно сколько проблем..

по поводу того который разрисовал что у него проблем нету с кодировками - в моей организации над этой проблемой бились полтора года до моего прихода в нее и ничего не придумали. Да, некоторый софт работает без проблем с любыми кодировками которые укажешь, а другой, который на sybase построен - наотрез отказывается рубить в кодировке не cp1251.

SwitNJ
() автор топика
Ответ на: комментарий от Komintern

это я его так монтировал когда старый веник цеплял. теперь на новом ext3 с 866 именами файлов... проблему уже описал - никакие параметры не помогли - mount рагуется что такие опции недопутимы для ext3

SwitNJ
() автор топика
Ответ на: комментарий от anonymous

Хорошо, мать вашу, ставим вопрос по другому:

есть две тачки с линуксами. В одном системная локаль UTF-8, а вдругом системная локаль ХУИ-8. Задача - присоединить веник с одного линукса на второй и успешно раздеребаниться с русскими именами файлов, скопировать туды файло, а затем снять веник, вернуть обратно и чтобы все было чики-пики! И там и там разделы на ext3.

Еще давай попиzдоболь на три страницы.. или может решение предложишь?

SwitNJ
() автор топика
Ответ на: комментарий от SwitNJ

перекодируй каждый раз все имена со старой кодировки в новую, иначе - никак. или используй вфат, линупс с ним дружит с детства

anonymous
()
Ответ на: комментарий от SwitNJ

> Задача - присоединить веник

Почему не швабру?

> Еще давай попиzдоболь на три страницы.. или может решение предложишь?

Всё зависит только от тебя.

anonymous
()
Ответ на: комментарий от SwitNJ

Выправи руки и виндовым прогам будет монопенисуидально, какая у тебя в лялихе локаль. Хинт: кодировки фтп и самбы настраиваются

anonymous
()
Ответ на: комментарий от anonymous

>> Выправи руки и виндовым прогам будет монопенисуидально, какая у тебя в лялихе локаль.

попробуй не поменяв локаль на 1251 зайти в Миднайт Коммандере на фтп ресурс виндовый а потом говори. Это в крусадере к примеру легко и то не на всех ресурсах - на самбе к приимеру ну никак. Конкваер при попытке поменять кодировку сетевого диска виснут напрочь и уже сколько лет это проблеме - никто ее не решил. Жопа, одним словом, происходит.

>> Хинт: кодировки фтп и самбы настраиваются этот хинт мне известен и я с ними дружу легко. но токо тогд когда ты настраиваешь их на линуксовой тачке, а вот когда тебе с линуксовой надо достучаться до виндузовой.. оооо!!... секс вам в руки!

Собственно говоря я за UTF-8, но поскольку так требует єта спеціфическая софтина (єто раз) и от смены кодировки на 1251 я ни в чем не теряю вообще при повседневной работы то мне пофигу что все остальные рекомендуют работать в UTF-8 (Это два).

Так что если нет вариантов как побороть без копирования туда-сюда каждый раз - то так и скажите. Я не совсем полный тупицы, просто надеюсь на то что кто-то уже такое поборол.

SwitNJ
() автор топика
Ответ на: комментарий от SwitNJ

все было бы и на само мделе очень просто будь то файловая система фат32, но файло хранимое на том венике размером поболее 4 гектаров будет.. так что.. фат - фтопку. НТФС не предлагать - гори оно синим пламенем!

SwitNJ
() автор топика
Ответ на: комментарий от SwitNJ

Не, ну читай еще раз, ведь все уже написано:

1) используй для общего диска vfat

2) просто перекудируй все имена файлов когда педключишь диск к другой системе, копировать ничего не понадобится. Скрипт в гугле

anonymous
()
Ответ на: комментарий от anonymous

fat не рулит - уже написал об этом по поводу скрипта - видать это единственное решение.. сцылку в студию, если есть где. или название скрипта хотя бы. посмотерл в нете - не у уодного меня такие проблемы, оказывается. дровописателям англоязычным начхать на эти траблы, ведь это не их траблы.

SwitNJ
() автор топика
Ответ на: комментарий от SwitNJ

s/рулит/подходит/ s/видать/видимо/ s/сцылку/ссылку/ s/в студию/покажи пожалуйста/ s/нете/гугле/

КЛБ

anonymous
()
Ответ на: комментарий от anonymous

Всем спасибо господа, особенно тем спецам которые сказали много добрых и теплых слов и не могли подсказать что для этого существует утилита, конкретно под мою оську это convmv-1.12-2.29.noarch.rpm - свежак. Переконвертирует дерево каталогов из одной локали в другую. А ведь сколько файлов можно было бы вернуть к жизни если бы я раньше ее нашел.. вечно лажа такая - запакуешь в архив файлы.. понес на другую систему - а там болт, имена нечиталильны.. теперь есть спасение! Спасибо anonymous (*) (13.05.2008 17:04:39) !

SwitNJ
() автор топика
Ответ на: комментарий от Komintern

Ты идиот. Это в FAT у винды 866-я кодировка, а в NTFS ВСЕГДА UTF-16.

anonymous
()
Ответ на: комментарий от anonymous

снимаем веник в винды и несем на линукс с локалью 1251: (у кого другая локаль - читайте man comvmv а также comvmv --list для списка кодировок) 0)мейкаем папку /mnt/data маунтим веник (раздел уже на ext3 и на нем файлы в 866 кодировке записаные после использования Ext2IFS!): mount /dev/sd[xx] /mnt/data

1) проверяешь на наличие ошибок в именах - вдруг есть имена которые по русски видятся нормально - их переименование вызовет необратимые крокозябрыи потерю данных соответственно. исправляете или переименовываете в английские названия. convmv -f cp866 -t cp1251 -r /mnt/data 2) убедившись что ругани нет прога предложит как именно она переименует ваши файлы с русскими буковками, о чем выведет длинный скрипт в консоль, далее предложить пустить команду с ключиком на окончательное переименование, что и сделаем: convmv -f cp866 -t cp1251 -r /mnt/data --notest (-r -- для рекурсивного поиска фалов в директориях) зашибись! сработало! поделали все что нам нужно, конвертим взад (меняем местами 'f' и 't'!!): convmv -t cp866 -f cp1251 -r /mnt/data опять же таки смотрим чтобы не было ошибок в именах! ну и далее: convmv -t cp866 -f cp1251 -r /mnt/data --notest

снимаем веник - несем на винду - ВУАЛЯ! И все дела! фуух... в WIKI!!!

SwitNJ
() автор топика
Ответ на: комментарий от SwitNJ

> спасибо господа, особенно тем спецам которые сказали много добрых и теплых слов и не могли подсказать что для этого существует утилита

Для этого существует утилита Brain, из которой можно вызвать bash, find и iconv. Для лишенных первой из этого набора утилит как раз и создали convmv (а мы ее в 1996-м в качестве лабораторной по спецкурсу "Unix-системы" писали). Это раз.

А во-вторых, ты сам виноват, когда начал спрашивать "как монтировать разделы в разных кодировках" и прочую чушь. В ответ на что тебе и сообщили все что думают по твоему поводу...

no-dashi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.