Не удаётся скопировать каталог с файлами с non regular символами в наименовании файла
Не удаётся скопировать каталог с файлами с non regular символами в наименовании файла¶
Если в процессе копирования каталога на другой сервер rsync отваливается с ошибкой, вызванной не регулярным набором символов в наименовании файла(не разрешённые в названии имен файлов символы вроде СЂРµ
часто стают причиной возникновения подобной ошибки), есть несколько вариантов решения проблемы:
- На исходном сервере файлы имели наименования в одной кодировке(к примеру в cp1251), а на сервере назначения имена файлов должны быть в utf-8. В таком случае мы применяем для копирования rsync с параметром --iconv=LOCAL,REMOTE, примерно так
rsync --iconv=cp1251,utf8 /source_path/ some.host:/target_path/
-
В некоторых случаях при не регулярном символе в имени файла при копировании помогает добавление параметра --protect-args к параметра rsync. Данный параметр указывает удалённому rsync, что некоторые служебные и не регулярные символы, такие как ~ или $ не должны интерпретироваться командной оболочкой на принимающей стороне, что это – часть имени файла, а не спец-символы, которые необходимо как-то интерпретировать.
-
На текущем сервере, и на сервере назначения используется кодировка utf8, но конкретные документы в одном из каталогов имеют названия в другой, не корректной для текущей локали, кодировке(к примеру, они были скопированы по ftp с виндового сервера, с не корректно выставленной кодировкой наименования файлов), но нам, по определённым причинам, важно сохранить наименования данных файлов в оригинальном виде.
В этом случае rsync нам не помощник, так как rsync не позволяет скопировать файлы, в именах которых присутствуют не регулярные символы. Копируем каталог, содержащий файлы с не регулярными символами в наименовании в их оригинальном виде, с помощью tar и ssh, к примеру, так