É melhor deixar o padrão correspondente ao rsync, então você não está dependendo do shell e das opções que o shell tem naquele momento.
Quando você faz:
rsync -a /some/dir/* host:/remote/dir/
você está realmente pedindo ao shell para expandir a parte /some/dir/*
, para que o rsync seja realmente executado assim:
rsync -a /some/dir/adir /some/dir/afile /some/dir/anotherfile [etc] host:/remote/dir/
Isso geralmente é bastante semelhante ao que a intenção era, porém nem sempre como demonstrado pelo fato de que essa pergunta foi feita. Por isso, é melhor executar:
rsync -a /some/dir/ host:/remote/dir/
Agora o rsync (porque -a
é a abreviação de -rlptgoD
que inclui -r
para recursão) percorre recursivamente o diretório /some/dir
e sincroniza todo o seu conteúdo para /remote/dir
no host remoto, incluindo qualquer ponto arquivos diretamente em /some/dir
.
Quando o caminho de origem termina com uma barra /
, os nomes de arquivos transferidos omitem qualquer parte do local de origem. Se /some/dir
foi passado, você está dizendo para sincronizar explicitamente o diretório dir
, incluindo o nome dele. É recomendável criar o hábito de adicionar a última barra em todos os momentos para evitar essa confusão, a menos que você realmente entenda o que está acontecendo.