Поиск по этому блогу

25 июня 2017

Точки сохранения My Book Live и русские буквы в именах файлов

При создании точки сохранения (safepoint) через web-интерфейс My Book Live (далее MBL) русскоязычные имена файлов и папок превращаются в крякозябли.


Пара ссылок на обсуждения на WD Community: раздва, три.

Версия прошивки: MyBookLive 02.43.10-048 : Core F/W (последняя на данный момент), если у вас стоит более старая, то, возможно, стоит обновиться. Есть шанс, что в какой-то очередной версии ошибка будет исправлена.

Далее по шагам (для простых юзеров):

1. Включаем ssh-доступ
1.1 заходи в web-интерфейс MBL, в адресной строке браузера пишем  http://mybooklive/UI/ssh
1.2. отмечаем галочку "Доступ SSH"

2. заходим на MBL по ssh
2.1 если работаете под Windows, то качаем и устанавливаем PuTTY
2.1.2 запускаем PuTTY и вбиваем ip-адрес (или можно написать mybooklive вместо ip-адреса) вашего MBL в поле Host name (or IP address), указываем порт 22, отмечаем Connection type SSH
2.1.3 Нажимаем кнопку Open внизу окна
2.1.4 На предложение ввести имя пользователя пишем root
2.1.5 Пароль welc0me (с нулем вместо буквы o -- как это и было указано в web-интерфейсе)
2.2 если работаете под Linux, то в терминале пишем (да вы и сами знаете): ssh root@mybooklive, вводим пароль welc0me.
2.3 Если вход удался, в терминале будет написано MyBookLive:~#

3. Редактируем файл /sbin/mount.smbfs
3.1 в терминале пишем nano /sbin/mount.smbfs и жмем enter
3.2 откроется текстовый редактор, стрелками или кнопкой PageDown идем в последнюю строку
3.3 последняя строка сейчас выглядит так: 
exec /sbin/mount.cifs "${args[@]}"
3.4 редактируем ее, чтобы стало так:
exec /sbin/mount.cifs "${args[@]},iocharset=utf8"
3.5 жмем Ctrl-O и enter для сохранения файла
3.6 жмем Ctrl-X для выхода из редактора

4. Завершение
4.1 закрываем терминал
4.2 в браузере назад отключаем SSH-доступ
4.3 перезагружаем MBL (хотя можно и без этого)
4.4 как обычно создаем точку сохранения
4.5 наслаждаемся результатом.

Что происходит (для продвинутых):

perl-скрипт /usr/local/NSPT/WDSafe/safeptExec.pl отвечает за создание safepoint'ов. Вызывая другие perl-скрипты, создается каталог /media/WDSAFE/.../, в который с помощью команды smbmount монтируется удаленный каталог, после чего вызывается rsync, который собственно и выполняет резервное копирование.

Собственно, проблема заключается в недостающем параметре монтирования iocharset=utf8 команды mount.cifs. 
Как вариант, можно было бы отредактировать perl-скрипт /usr/local/NSPT/WDShare/lib/ShareInstance.pm, из которого и вызывается smbmount, но, хоть это, наверное, и было бы идеологически более верным, описанный выше способ проще.

Каталог /CacheVolume/WDPROT/WDSAFE/safepts/ содержит файлы с описанием safepoint'ов. В том числе они содержат и пароли доступа к удаленным smb-ресурсам в открытом виде. Также пароли попадают в /var/log/rest_api.log, и возможно еще куда-то.

Если руками размонтировать каталог /media/WDSAFE/.../, то через 2 минуты он снова примонтируется (при наличии файла в /CacheVolume/WDPROT/WDSAFE/safepts/), что за процесс это делает, я так и не выяснил.

Что еще:

для русификации терминала необходимо в /root/.bashrc прописать export LC_ALL=ru_RU.UTF-8 и еще возможно сделать dpkg-reconfigure locales, выбрав ru_RU.UTF-8 и en_US.UTF-8. Если все хорошо, то команда locale выдает следующее:
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8

Комментариев нет:

Отправить комментарий