rsync из Solaris в Windows (кодировка символов в именах файлов)

Я пытаюсь использовать RSYNC для синхронизации файлов из системы Solaris 9 (SunOS 5.9) в Windows Server 2008 R2 (через cygwin)

Существует много файлов, содержащих такие символы, как "ä", "ö", "ü" или "ß". Которые отображаются правильно только тогда, когда пользователи Windows получают доступ к Solaris-Samba-Share. Rsync показывает эти символы как: #201 для "ü". После копирования в окна символы становятся "точками", например:

  • <- Точка

А на солярисе они выглядят так: ▒

Можно ли использовать функциональность rsync "--iconv" для преобразования имен файлов в правильный формат? Как определить кодировку имени файла на машине соляриса?

1 ответ

Я столкнулся с той же проблемой и обнаружил, что вы можете использовать инструмент convmv, чтобы найти кодировку для файла, а затем использовать rsync --iconv вариант.

  1. Скачайте convmv с https://www.j3e.de/linux/convmv/ и распакуйте
  2. Проверьте доступные кодировки с convmv --list
  3. Попробуйте (или напишите скрипт), какая кодировка работает с convmv, например, с convmv -f iso-8859-1 -t UTF-8 /path/to/file (код возврата в $? 0, когда преобразование работало, а не 0 в противном случае)
  4. Когда правильная кодировка найдена, используйте rsync с --iconv параметр, например rsync --iconv=ISO-8859-1,UTF-8 /source /destination
Другие вопросы по тегам