Estou tentando sincronizar o diretório A do server1 com o diretório B do server2.
Sentado no diretório A do server1, executei os seguintes comandos.
rsync -av * server2::sharename/B
mas o interessante é que ele sincroniza todos os arquivos e diretórios, exceto .htaccess ou qualquer arquivo oculto no diretório A. Todos os arquivos ocultos nos subdiretórios são sincronizados.
Também tentei o seguinte comando:
rsync -av --include=".htaccess" * server2::sharename/B
mas os resultados são os mesmos.
Alguma idéia de por que os arquivos ocultos do diretório A não estão sendo sincronizados e como consertar. Estou executando como usuário root.
obrigado
Respostas:
Isso se deve ao fato de que,
*
por padrão, é expandido para todos os arquivos no diretório de trabalho atual, exceto os arquivos cujo nome começa com um ponto. Assim,rsync
nunca recebe esses arquivos como argumentos.Você pode passar
.
denotando o diretório de trabalho atual pararsync
:Dessa forma,
rsync
você procurará arquivos para transferir no diretório de trabalho atual, em vez de procurá-los no que se*
expandir.Como alternativa, você pode usar o seguinte comando para
*
expandir para todos os arquivos, incluindo aqueles que começam com um ponto:Veja também a página de manual do shopt .
fonte
rsync -avz [email protected]:/remote/path/. /destination/path
faz o trabalhoPara quem está apenas tentando diretórios de sincronização entre servidores (incluindo todos os arquivos escondidos) - por exemplo, a sincronização
somedirA
onsource-server
asomedirB
em um servidor de destino - tente este :Observe as barras no final de ambos os caminhos. Qualquer outra sintaxe pode levar a resultados inesperados!
Além disso, para mim é mais fácil executar
rsync
comandos do servidor de destino, porque é mais fácil garantir que tenho acesso de gravação adequado (ou seja, posso precisar adicionarsudo
o comando acima).Provavelmente nem é preciso dizer, mas obviamente seu usuário remoto também precisa de acesso de leitura
somedirA
em seu servidor de origem. :)fonte
.htaccess
arquivo?-e ssh
especifica o método de conexão.Eu tive o mesmo problema.
Para mim, quando fiz o seguinte comando, os arquivos ocultos não foram sincronizados
Mas quando adicionei as barras no final dos caminhos, os arquivos ocultos foram sincronizados.
Observe as barras no final dos caminhos , como Brian Lacy disse que as barras são a chave. Não tenho reputação para comentar sobre a postagem dele ou o teria feito.
fonte
shopt -s dotglob
ao seu script antes do rsyncAcho que o problema é devido à expansão do curinga do shell. Usar . em vez de estrela.
Considere o seguinte exemplo de conteúdo de diretório
A expansão do curinga do shell traduz a lista de argumentos que o programa rsync obtém
para dentro
antes que o comando comece a ser executado.
fonte
O
*
comando rsynch para não sincronizar arquivos ocultos. Você não deve omitir isso.fonte