Вообщем слетела винда у сестры. Не грузиться никак. Решил ставить ей все с нуля - но перед этим нужно было сохранить очень важную папку.
Поскольку винда не грузилась ни в какую я загрузился с system rescue cd.
Подмонтировал раздел с помощью ntfs-3g. Эту папку сжал в tar.gz и скинул на безопасный раздел.
Установил винду - распаковал архив а там как всегда - имена файлов кракозябрами.
Это много вордовских файлов - имена которых очень нужно восстановить.
Погуглив нихрена так и не сделал. Пишут что нтфс какбы на utf-8 и я думал что проблем с русским не будет.
Посоветуйте что мне делать. Очень важная информация
Windows russian filenames
Загрузитесь с SystemRescueCD, смонтируйте безопасный и NTFS разделы, распакуйте архив.
NTFS действительно использует для хранения имён файлов Unicode (это не значит UTF-8, если правильно путаю -- UCS2).
А если я распаковавши удалил тот архив - и файлы сейчас на нтфс-е распакованные.
Может еще есть способы?
NTFS как бы на cp1251, монтируйте с указанием этой кодировки.
А если я распаковавши удалил тот архив - и файлы сейчас на нтфс-е распакованные.
Тогда, для предположения о способе неправильного перекодирования, покажите для пары файлов результат
[console]
$ ls "кривое имя файла" | hexdump -C
[/console]Если при этом назовёте что должно было быть -- вообще замечательно.
После определения правильного способа обратного преобразования, натрАвите на дерево convmv, предварительно забэкапив то, что есть.
NTFS как бы на cp1251, монтируйте с указанием этой кодировки.
Не надо глупость говорить, ntfs использует utf8.
newzenon, использовать она его может, но дефолтная кодировка всё-таки cp1251, и созданные там файлы будут тоже в cp1251, уж поверьте win-админу :)
newzenon, использовать она его может, но дефолтная кодировка всё-таки cp1251, и созданные там файлы будут тоже в cp1251, уж поверьте win-админу :)
proof в студию, верить win-админу совесть не позволяет.
newzenon, фигню сморозил в запале, простите. Для фс особой разницы в кодировках нету. А вот для ОС есть. Windows как раз cp1251 использует. Поэтому всё-таки монитровать надо с её указанием.
kessian, еще раз: Параметр locale отвечает не за кодировку, в которой хранятся имена файлов на монтируемой файловой системе, а за локаль самой системы.
Так что монтировать надо в той кодировке в которой работаешь, в той которую покажет команда locale, а т.к. уже везде в linux де-факто utf8, то и вывод ясен.
ы. Монтировать так:
FAT
mount -t vfat -o codepage=866,iocharset=utf8,quiet,umask=000 /dev/sdb2 /mnt/win1NTFS
mount -t ntfs -o nls=utf8,umask=0,rw /dev/sbd2 /mnt/win1Но в принципе все это по-умолчанию должно быть уже, в большинстве случаев итак:
mount /dev/sdb2 /mnt/win1должно быть нормально.
ыы. Правила монтирования по умолчанию прописаны в cat /etc/udev/rules.d/99-mnt.rules
Но в принципе все это по-умолчанию должно быть уже, в большинстве случаев итак:
mount /dev/sdb2 /mnt/win1
На современных дистрах линукса да так, но не известно какой давности был тот system rescue cd у ТС и какое там ядро.
Vadimsky, ну в любом случае я объяснил. Пусть ТС загрузится и покажет вывод
localeв зависимости от вывода и будет и будет параметр nls= при монтировании ntfs
или:
export | grep LANG
export | grep LC[quote=vux]А если я распаковавши удалил тот архив - и файлы сейчас на нтфс-е распакованные.
Тогда, для предположения о способе неправильного перекодирования, покажите для пары файлов результат
[console]
$ ls "кривое имя файла" | hexdump -C
[/console]Если при этом назовёте что должно было быть -- вообще замечательно.
После определения правильного способа обратного преобразования, натрАвите на дерево convmv, предварительно забэкапив то, что есть.[/quote]
ls|hexdump -c
0000000 221 245 340 245 246 240 \n
0000007
это так оно выдало на простое название папки "Сережа"
System Rescue CD предпоследний
что значит предпоследний?
uname -a в командной строке System Rescue CD покажите
vux,
1) "-C" была заглавной...
2) просил пару строк
Ну ладно, будем из 8-ричной переводить.
(): Сережа
(8): 221 245 340 245 246 240
(10): 145 165 224 165 166 160
(16): 91 A5 E0 A5 A6 A0
Это в cp866. Для проверки сделайте
[console]$ ls | iconv -f cp866[/console]должны увидеть все "по-русски".
Предварительно забэкапить, убедиться, что ФС смонтирована в UTF-8, русские имена файлов, созданных под Windows, видны правильно. Затем
[console]$ convmv -r -f cp866 -t UTF-8[/console]
и если всё нормально, то
[console]$ convmv -r -f cp866 -t UTF-8 --notest[/console]
Как-то так.
ls | iconv -f cp866
iconv: illegal input sequence at position 18vux,
чего-то не договариваете. Можно, конечно,
[console]
$ ls | iconv -c -f cp866
[/console]Но!
Без вывода при смонтированном разделе
[console]# locale
# mount
# cd проблемный/каталог
# ls
# ls | hexdump -C[/console]дальнейшие предположения оставлю при себе. Это тот необходимый минимум, без которого даже уточняющие вопросы задавать не имеет смысла.