Skip to content

Не удаётся скопировать каталог с файлами с non regular символами в наименовании файла

Не удаётся скопировать каталог с файлами с non regular символами в наименовании файла

Если в процессе копирования каталога на другой сервер rsync отваливается с ошибкой, вызванной не регулярным набором символов в наименовании файла(не разрешённые в названии имен файлов символы вроде СЂРµ часто стают причиной возникновения подобной ошибки), есть несколько вариантов решения проблемы:

  • На исходном сервере файлы имели наименования в одной кодировке(к примеру в cp1251), а на сервере назначения имена файлов должны быть в utf-8. В таком случае мы применяем для копирования rsync с параметром --iconv=LOCAL,REMOTE, примерно так

rsync --iconv=cp1251,utf8 /source_path/ some.host:/target_path/
В итоге на сервер назначения имнена файлов будут записываться в корректной для данного хоста кодировке utf8, и мы избежим проблем с копированием файлов с не регулярными символами в названии файлов, и с последующим корректным отображением имён этих файлов.

  • В некоторых случаях при не регулярном символе в имени файла при копировании помогает добавление параметра --protect-args к параметра rsync. Данный параметр указывает удалённому rsync, что некоторые служебные и не регулярные символы, такие как ~ или $ не должны интерпретироваться командной оболочкой на принимающей стороне, что это – часть имени файла, а не спец-символы, которые необходимо как-то интерпретировать.

  • На текущем сервере, и на сервере назначения используется кодировка utf8, но конкретные документы в одном из каталогов имеют названия в другой, не корректной для текущей локали, кодировке(к примеру, они были скопированы по ftp с виндового сервера, с не корректно выставленной кодировкой наименования файлов), но нам, по определённым причинам, важно сохранить наименования данных файлов в оригинальном виде.

В этом случае rsync нам не помощник, так как rsync не позволяет скопировать файлы, в именах которых присутствуют не регулярные символы. Копируем каталог, содержащий файлы с не регулярными символами в наименовании в их оригинальном виде, с помощью tar и ssh, к примеру, так