Tenho acesso SSH (usando um par de chaves SSH) a uma máquina remota. Quero manter um diretório na máquina remota exatamente igual a um determinado diretório local (sincronização unilateral). A verificação da igualdade do arquivo deve ser feita com base em um hash do conteúdo do arquivo binário (não no tamanho/data).
- Qual é o comando rsync correto para fazer isso (não o serviço rsync)?
- Como as permissões de arquivo são tratadas?
- Como são tratadas as datas de modificação de arquivos?
- Como o rsync reage às falhas e qual é o código de saída?
Responder1
O Rsync verifica o conteúdo do arquivo, não a data e/ou tamanho do arquivo. Se o conteúdo for diferente, mas tiver o mesmo caminho e nome, o arquivo será sobrescrito.
A sintaxe para rsync é rsync options source destination
assim, se você deseja manter um diretório remoto sincronizado com um local, isso deve resolver:
rsync -azh local_folder user@remote_server:/path/to/destination/
Se você quiser usar SSH como protocolo de transferência, isso funciona para mim:
rsync -azhe ssh local_folder user@remote_server:/path/to/destination
Como as permissões de arquivo são tratadas? Como são tratadas as datas de modificação de arquivos?
O a
parâmetro preserva links simbólicos, permissões de arquivo, carimbos de data e hora... se você não quiser transferir essas informações apenas exclua-as do comando, elas serão de propriedade do usuário com quem você efetuou login na sessão SSH.
Como o rsync reage às falhas e qual é o código de saída?
A maioria dos comandos/programas retorna 0 em caso de sucesso e qualquer outro número em caso de erro.Aqui está uma lista de códigos de saída rsyncpara referência