У меня есть виртуальный сервер Ubuntu, работающий на моем сервере Windows. К этому серверу подключено 2 внешних жестких диска, которые смонтированы в Ubuntu.
Теперь я пытаюсь запустить rsync для синхронизации каталога на рабочем столе и на моем сервере Windows.
Я делаю это следующим образом:
rsync -av --update christophe@begijnhof.no-ip.org:/home/seagate/Syncfolder/Pictures/ /syncs/pictures
/syncs/pictures
является символической ссылкой на /cygdrive/c/../pictures
. Все эти символические ссылки работают правильно, и удаленный каталог тоже существует.
Теперь, когда я запускаю указанную выше команду rsync, она делает это:
created directory /syncs/pictures\#015
Это фактически создает каталог с именем «pictures» в моей папке / syncs /. Так что не в символической ссылке. Рядом с символической ссылкой:
$ ls
pictures pictures?
Когда я добавляю косую черту к месту назначения:
rsync -av --update christophe@begijnhof.no-ip.org:/home/seagate/Syncfolder/Pictures/ /syncs/pictures/
Он создает каталог с именем "# 015" (странная точка) внутри моей фактической Папка с картинками на моей башне!
Я думаю, это как-то связано с кодировкой?
Я написал все сценарии bash в notepad ++ с кодировкой в ANSI.
Фундаментальная проблема здесь - по крайней мере, в моем случае - заключалась в том, что рассматриваемый файл имел соглашение Windows о символе CR + LF в конце файла сценария, в отличие от соглашения * nix простого использования только LF , Чтобы это исправить, вам нужно изменить сам файл скрипта так, чтобы он следовал * nix соглашениям. Ответ выше предлагает несколько хороших способов сделать это. Некоторые редакторы (например, Notepad ++) имеют похожую встроенную функциональность.
Я решил эту проблему, запустив dos2unix в Windows для всех файлов сценариев. Вы также можете сделать это в Linux.