Como rsync apenas novos arquivos

116

Estou tentando configurar o rsync para sincronizar meu servidor da Web principal com o servidor remoto, adicionando o arquivo recém-gerado ao último.

Aqui está o comando que eu uso:

rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar

Mas parece que o servidor web realmente transfere todos os arquivos apesar do sinalizador '--update'. Eu tentei diferentes combinações de sinalizadores (por exemplo, omitindo '-a' e usando '-u'), mas nenhum ajudou. Então, querendo saber como posso modificar o comando rsync para enviar apenas os arquivos recém-adicionados. Obrigado

    
por supermario 11.03.2013 / 08:28

4 respostas

145

De man rsync :

--ignore-existing       skip updating files that exist on receiver

--update faz algo um pouco diferente, e é provavelmente por isso que você está obtendo resultados inesperados. Novamente, de man rsync :

This forces rsync to skip any files which exist on the destination and have a modified time that is newer than the source file. (If an existing destination file has a modification time equal to the source file's, it will be updated if the sizes are different.)

    
por 11.03.2013 / 08:44
34

No meu caso, tive problemas semelhantes, tendo todos os arquivos transferidos em vez de apenas os modificados / novos. Eu resolvi isso usando os parâmetros -t (em vez de -a ) e -P (equivalente a --partial --progress ):

rsync -h -v -r -P -t source target

Isso transfere apenas novos arquivos e arquivos já existentes, mas modificados: -a faz muito, como sincronização de ID de usuário e grupo, que no meu caso não pode funcionar, pois tenho diferentes usuários e grupos nos meus sistemas de origem e destino .

Os parâmetros detalhados:

  • -h : números legíveis por humanos
  • -v : verbose
  • -r : recurse em diretórios
  • -P : --partial (manter arquivos parcialmente transferidos) +
         --progress (mostra o progresso durante a transferência)
  • -t : preserva os tempos de modificação
por 10.08.2014 / 11:55
2

Da minha experiência com o rsync, uma cópia de partição de 1 TB é muito grande para ser eficiente. É preciso sempre o rsync para processá-lo. Em vez disso, faça isso por subdiretórios. Ou seja, execute o rsync para cada subdiretório principal. Ele vai muito mais rápido se não precisar fazer malabarismos com dezenas de milhares de arquivos.

    
por 18.10.2013 / 14:06
-2

Tente

rsync -zvrt --update SOURCE DESTN
    
por 22.10.2016 / 10:57

Tags