O Rsync permite que os arquivos sejam sincronizados de duas formas?

25

Eu fiz o backup de um servidor web linux usando o rsync com o cygwin. Agora tenho uma cópia perfeita do servidor no meu laptop Windows. Se eu excluir ou modificar um arquivo no meu laptop e executar o rsync novamente com o cygwin, ele excluirá / atualizará o mesmo arquivo no servidor? Estou com a impressão de que, se eu excluir / modificar no servidor e executar o rsync no meu laptop, ele excluirá / modificará o arquivo local no meu laptop, mas isso funcionará ao contrário?

Dan Hastings
fonte
12
Esta não é uma resposta para sua pergunta, mas você deve dar uma olhada unison. É uma ferramenta de sincronização que salva o estado do arquivo nas duas cópias e, portanto, permite a sincronização bidirecional. Há também um pacote cygwin.
Dubu

Respostas:

29

O Rsync faz uma sincronização unidirecional, no entanto, cabe a você decidir para que lado a sincronização será.

A sintaxe do comando Rsync é a seguinte:

rsync [OPTION...] SRC... [DEST]

Observe que você especifica a sincronização da origem ao destino. A origem e o destino podem ser qualquer caminho local ou remoto.

Por exemplo, se você deseja copiar arquivos do servidor para o laptop, faça:

rsync [OPTION...] <server-path> <laptop-path>

Para sincronizar na direção oposta, você faz:

rsync [OPTION...] <laptop-path> <server-path>

Então, para responder sua pergunta: depende de como você executa o rsync.

Se você deseja que os arquivos sejam excluídos no destino, é necessário usar a --deleteopção Mas tenha cuidado com isso, porque se você cometer um erro ao especificar sua fonte, você removerá tudo o que estiver no seu destino. É mais seguro testar sua sincronização sem a --deleteopção primeiro e, quando estiver satisfeito com o funcionamento, você pode adicionar a --deleteopção.

Conforme sugerido por masegaloeh nos comentários abaixo, -nou a --dry-runopção também pode ser usada para testar o rsynccomportamento do comando.

grekasius
fonte
9
Nota adicional: Para testar o comportamento rsync, você pode usar o parâmetro -nou --dry-run, então você vai saber qual arquivo será excluído e modificado
masegaloeh
1

Uma ferramenta de invólucro escrita em python3 denominada bsyncwraps finde rsynccomando simplifica a tarefa. Repo do Github: https://github.com/dooblem/bsync

Não se assuste quando estiver no github (isto é, de uma maneira que você acha que deve ser um programador para usar a ferramenta).

biocibernético
fonte
-1

considere usar --delete-after e não --delete, isso garantirá que o seu destinatário exclua os arquivos após a transferência, não antes.

Moti
fonte
Entendo que os votos negativos são porque o OP não está tentando rsyncexcluir nada. Ele está excluindo coisas por conta própria. Dito isto, dica útil para sincronizar em geral. Obrigado.
harperville