Eu resolvi isso executando dos2unix no Windows em todos os arquivos de script. Você também pode fazer isso no Linux.
Eu tenho um servidor ubuntu virtual em execução no meu servidor windows. Este servidor tem 2 discos rígidos externos conectados, que são montados no Ubuntu.
Agora eu tento rodar o rsync para sincronizar um diretório na minha área de trabalho e no meu servidor windows.
Eu faço isso da seguinte maneira:
rsync -av --update [email protected]:/home/seagate/Syncfolder/Pictures/ /syncs/pictures
O /syncs/pictures
é um link simbólico para /cygdrive/c/../pictures
. Todos esses links simbólicos funcionam corretamente, e o diretório remoto também existe.
Agora, quando executo o comando rsync acima, ele faz isso:
created directory /syncs/pictures\#015
Isso, na verdade, cria um diretório chamado "imagens" na minha pasta / syncs /. Então não no symlink. Ao lado do link simbólico:
$ ls
pictures pictures?
Quando adiciono uma barra ao destino:
rsync -av --update [email protected]:/home/seagate/Syncfolder/Pictures/ /syncs/pictures/
Ele cria um diretório chamado "# 015" (o ponto estranho) dentro da minha pasta Pictures em minha torre!
Eu acho que tem algo a ver com a codificação?
Eu escrevi todos os scripts do bash no notepad ++ com codificação para ANSI.
Eu resolvi isso executando dos2unix no Windows em todos os arquivos de script. Você também pode fazer isso no Linux.
O problema fundamental aqui - pelo menos no meu caso - era que o arquivo em questão tinha a convenção do Windows de um caractere CR + LF no final do arquivo de script, em oposição à convenção * nix de usar apenas LF . Para corrigir isso, você precisa alterar o próprio arquivo de script para que ele siga as convenções * nix. A resposta acima sugere algumas boas maneiras de fazer isso. Alguns editores (por exemplo, o Notepad ++) têm funcionalidades semelhantes incorporadas.
Tags symbolic-link sync rsync