rsync ignora o proprietário, grupo, hora e perms

57

Eu quero saber como usar o rsync para sincronizar com pastas recursivas, mas Eu só preciso atualizar os novos arquivos ou os arquivos atualizados (apenas o conteúdo não o proprietário, grupo ou timestamp) e eu quero excluir os arquivos que não existem na fonte.

    
por alsanal 22.11.2013 / 14:08

5 respostas

80

Acho que você pode usar as opções -no- para rsync para NÃO copiar a propriedade ou as permissões dos arquivos que você está sincronizando.

Trecho da página de manual do rsync

--no-OPTION
       You may turn off one or more implied options by prefixing the option 
       name with "no-".  Not all options may be pre‐fixed  with  a  "no-":  
       only options that are implied by other options (e.g. --no-D, 
       --no-perms) or have different defaults in various circumstances (e.g. 
       --no-whole-file, --no-blocking-io, --no-dirs).  You may specify 
       either the short or the long option name after the "no-" prefix (e.g. 
       --no-R is the same as --no-relative).

       For example: if you want to use -a (--archive) but don’t want -o 
       (--owner), instead of converting -a into -rlptgD, you could specify 
       -a --no-o (or -a --no-owner).

       The order of the options is important:  if you specify --no-r -a, the 
       -r option would end up being turned on,  the opposite  of  -a  
       --no-r.   Note  also  that the side-effects of the --files-from 
       option are NOT positional, as it affects the default state of several 
       options and slightly changes the meaning of -a (see the  --files-from
       option for more details).

Propriedade & Permissões

Olhando pela página man, acredito que você queira usar algo assim:

$ rsync -avz --no-perms --no-owner --no-group ...

Para excluir arquivos que não existem, você pode usar a opção --delete :

$ rsync -avz --no-perms --no-owner --no-group --delete ....

Timestamps

Quanto ao timestamp, não vejo uma maneira de manter isso sem alterar como você faria a comparação dos arquivos SOURCE vs. DEST. Você pode querer dizer a rsync para ignorar os timestamps usando este parâmetro:

-I, --ignore-times
       Normally  rsync will skip any files that are already the same size 
       and have the same modification timestamp.  This option turns off this 
       "quick check" behavior, causing all files to be updated.

Atualizar

Para timestamps, --no-times pode fazer o que você está procurando.

    
por 22.11.2013 / 14:19
17

Acho mais fácil evitar a opção -a

$ -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

e defina apenas as opções desejadas.

Se você gosta de todas as opções, mas não as modificações do usuário -o , o grupo -g , o tempo -t e as permissões -p para que você possa subtrair essas quatro opções do arquivo equivalente.

$ -rlD

Para excluir os arquivos no destino, use a opção - delete .

Para sua pergunta: Mas acho que todos os arquivos serão verificados - o rsync não pode transferir / verificar apenas arquivos que foram alterados apenas pelo conteúdo.

    
por 26.11.2013 / 09:43
6

Acho que o que você está procurando é a opção

rsync -r --size-only

da página do manual:

--size-only
   This  modifies  rsync’s  "quick  check"  algorithm  for finding files that need to be transferred,
   changing it from the default of transferring files  with  either  a  changed  size  or  a  changed
   last-modified  time  to  just  looking  for  files that have changed in size.  This is useful when
   starting to use rsync after using another mirroring  system  which  may  not  preserve  timestamps
   exactly.

Se você realmente deseja excluir arquivos ausentes no diretório de origem, use --delete

    
por 24.03.2016 / 02:00
4

Você pode forçar o rsync a ignorar verificações com base no tamanho e no tamanho do mod file e usar uma abordagem baseada no chksum com a opção "-c".

-c, --checksum              skip based on checksum, not mod-time & size

Isso significa que é necessário comparar o arquivo inteiro em partes (e transferir os metadados relevantes entre a origem e o destino para que isso aconteça), independentemente de a hora e o tamanho do arquivo coincidirem ou não, mas só transferirá o arquivo pedaços que diferem entre a origem e o destino.

A utilização deste comutador em conjunto com os outros comutadores sugeridos por outras pessoas deve limitar o que é copiado (apenas copiar o que foi alterado) e beneficiar de uma verificação de consistência entre a origem e o destino, MAS demora mais dependendo do seu link velocidade como tem que chksum os pedaços de arquivo em ambos os lados e comparar).

    
por 16.08.2016 / 08:57
-3

Abaixo o comando funcionaria perfeitamente, eu testei para o meu próprio requisito, levará apenas a mudança de conteúdo.

rsync -acvzh source/ destination/
    
por 08.01.2017 / 10:30

Tags