Sincronize duas pastas locais no bash

Sincronize duas pastas locais no bash

Eu tenho uma pasta grande "X" em meu diretório pessoal e uma cópia desatualizada dela em uma unidade flash - Y. Qual é o análogo de rm Y; cp X Y, mas sem substituir os arquivos já existentes?

Responder1

Existem muito mais propriedades parasincronizar novamentedo que a resposta anterior menciona. Você deve examiná-los você mesmo:

man rsync

Mas para o seu problema eu sugiro:

rsync -a --delete X Y

Dessa forma, o receptor (Y) excluirá qualquer arquivo que não esteja em X. Certifique-se de fazer isso corretamente. Usado incorretamente, pois o root pode facilmente matar seu sistema... :)

Responder2

Dê uma olhadarsync(1). O objetivo é fazer exatamente o que você deseja.

rsync -av X Y

Suporta cópia remota, através de protocolo próprio ou ssh, mas também pode ser usado localmente.

Dependendo do comportamento exato que você deseja, você também pode passar a --updateopção. Isso dirá ao rsync para não sobrescrever arquivos que já existem no destino e são mais recentes que os da origem.

Se você deseja remover arquivos extras (ou seja, arquivos que existem em Y, mas não em X), você pode adicionar a --deleteopção.

Responder3

Você pode usarFitus/Zaloha.sh. Primeiro calcula as ações de sincronização necessárias, apresenta-as, pede confirmação e depois executa-as:

$ Zaloha.sh --sourceDir="X" --backupDir="Y"

Responder4

Acho que algumas das funcionalidades que você procura na opção -u (atualização) realmente existem nesta opção:

"--ignore-existente" - ignora a atualização dos arquivos que existem no receptor

informação relacionada