Comando rsync básico para cópias idênticas a bits

15

Tanto quanto eu entendo, o seguinte comando:

sudo rsync --delete -azvr /home/oshiro/Desktop/source/ /home/oshiro/Desktop/destination

É tudo o que preciso para criar uma sincronização simples de arquivos de um local para outro? Ou o comando acima faz mais alguma coisa em segundo plano que eu não conheço? Por exemplo, ele cria algum tipo de controle de versão, onde posso especificar um tempo passado para obter arquivos, como onde foram passados?

Esse é um recurso que eu não quero ativar nesta fase. Tudo o que eu quero é uma cópia idêntica em bits dos arquivos de um local para outro. Posso me livrar de qualquer um desses parâmetros ou preciso adicionar outros parâmetros para tornar as cópias idênticas aos bits, sem controle de versão. Basicamente, não quero criar backups como o sistema de backup do mac time machine cria backups.

oshirowanen
fonte

Respostas:

16

O Rsync não faz nenhum tipo de controle de versão nem mantém histórico, a menos que seja instruído com opções como --backup. Existem ferramentas de backup que usam o rsync, mas o rsync em si não é uma ferramenta de backup, da mesma forma que quatro rodas produzem um carro. Rsync apenas lida com a sincronização.

Em relação às opções que você usou ou pode querer usar:

  • -asignifica "copiar quase tudo" (copiar diretórios recursivamente, copiar links simbólicos como tal, preservar todos os metadados etc.). Use esta opção, a menos que esteja fazendo algo incomum.
  • Além disso -a, convém usar -Hpara preservar links físicos, -Apreservar ACLs ( -apreserva apenas permissões unix tradicionais) ou -Xpreservar atributos estendidos.
  • -rjá está incluído no -a.
  • -v significa detalhado.
  • -z é inútil para uma cópia local.
  • --delete exclui arquivos no destino que não estão presentes na fonte.

Portanto, este é o comando básico para tornar o destino idêntico à origem (ausência de links físicos, ACLs e atributos estendidos):

rsync -a --delete SOURCE/ DESTINATION/
Gilles 'SO- parar de ser mau'
fonte
5

Eu geralmente uso o comando desta resposta . A vantagem é que ele também preserva atributos estendidos e ACLs.

rsync -avxHAX --progress / /new-disk/

As opções são:

-a  : all files, with permissions, etc..
-v  : verbose, mention files
-x  : stay on one file system
-H  : preserve hard links (not included with -a)
-A  : preserve ACLs/permissions (not included with -a)
-X  : preserve extended attributes (not included with -a)
Benedikt Köppel
fonte
3

Este comando deve ser tudo o que você precisa. rsyncpor padrão, usa o chamado algoritmo de verificação rápida:

O Rsync localiza arquivos que precisam ser transferidos usando um algoritmo de "verificação rápida" (por padrão) que procura por arquivos que tenham mudado de tamanho ou no horário da última modificação. Quaisquer alterações nos outros atributos preservados (conforme solicitado pelas opções) são feitas diretamente no arquivo de destino quando a verificação rápida indica que os dados do arquivo não precisam ser atualizados.

Isso geralmente é bom na maioria dos aplicativos. É mais rápido que o método alternativo que calcula uma soma de verificação para cada arquivo. Esse segundo método garantirá as diferenças de rastreamento que podem passar despercebidas pelo primeiro método.

Em qualquer caso rsync, não mantém várias cópias dos arquivos, é uma copiadora / sincronizadora de arquivos bruta, mantendo um diretório sincronizado com outro, de acordo com as opções que você fornece.

Método de soma de verificação

Se você está curioso, aqui está a opção que eu uso rsyncpara executar esse tipo de sincronização:

$ rsync -avvz -O --stats --checksum --human-readable --acls \
    --itemize-changes --progress \
    --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
    "SRC" "DEST"

Isso gera este tipo de saída:

2014/02/20 09:51:49 INFO sending incremental file list 
2014/02/20 09:51:49 INFO delta-transmission disabled for local transfer or --whole-file 
2014/02/20 09:51:49 INFO [2014/02/20 09:51:48] [.d..t......] (Last Modified: 2014/02/19-15:51:34) (bytes: 0         ) ./
2014/02/20 09:51:49 INFO [2014/02/20 09:51:48] [>f+++++++++] (Last Modified: 2014/02/19-15:51:33) (bytes: 27981892  ) somefile.zip
      27.98M 100%   82.27MB/s    0:00:00 (xfer#1, to-check=0/2) 0
2014/02/20 09:51:49 INFO total: matches=0  hash_hits=0  false_alarms=0 data=27981892 
2014/02/20 09:51:49 INFO  
2014/02/20 09:51:49 INFO rsync[25205] (sender) heap statistics: 
2014/02/20 09:51:49 INFO   arena:        1060864   (bytes from sbrk) 
2014/02/20 09:51:49 INFO   ordblks:            1   (chunks not in use) 
2014/02/20 09:51:49 INFO   smblks:             4 
2014/02/20 09:51:49 INFO   hblks:              1   (chunks from mmap) 
2014/02/20 09:51:49 INFO   hblkhd:        135168   (bytes from mmap) 
2014/02/20 09:51:49 INFO   allmem:       1196032   (bytes from sbrk + mmap) 
2014/02/20 09:51:49 INFO   usmblks:            0 
2014/02/20 09:51:49 INFO   fsmblks:          304 
2014/02/20 09:51:49 INFO   uordblks:      667008   (bytes used) 
2014/02/20 09:51:49 INFO   fordblks:      393856   (bytes free) 
2014/02/20 09:51:49 INFO   keepcost:      393552   (bytes in releasable chunk) 
2014/02/20 09:51:49 INFO  
2014/02/20 09:51:49 INFO rsync[25207] (server receiver) heap statistics: 
2014/02/20 09:51:49 INFO   arena:         286720   (bytes from sbrk) 
2014/02/20 09:51:49 INFO   ordblks:            2   (chunks not in use) 
2014/02/20 09:51:49 INFO   smblks:             3 
2014/02/20 09:51:49 INFO   hblks:              3   (chunks from mmap) 
2014/02/20 09:51:49 INFO   hblkhd:        667648   (bytes from mmap) 
2014/02/20 09:51:49 INFO   allmem:        954368   (bytes from sbrk + mmap) 
2014/02/20 09:51:49 INFO   usmblks:            0 
2014/02/20 09:51:49 INFO   fsmblks:          224 
2014/02/20 09:51:49 INFO   uordblks:      174480   (bytes used) 
2014/02/20 09:51:49 INFO   fordblks:      112240   (bytes free) 
2014/02/20 09:51:49 INFO   keepcost:      102352   (bytes in releasable chunk) 
2014/02/20 09:51:49 INFO  
2014/02/20 09:51:49 INFO rsync[25206] (server generator) heap statistics: 
2014/02/20 09:51:49 INFO   arena:         135168   (bytes from sbrk) 
2014/02/20 09:51:49 INFO   ordblks:            2   (chunks not in use) 
2014/02/20 09:51:49 INFO   smblks:             6 
2014/02/20 09:51:49 INFO   hblks:              2   (chunks from mmap) 
2014/02/20 09:51:49 INFO   hblkhd:        401408   (bytes from mmap) 
2014/02/20 09:51:49 INFO   allmem:        536576   (bytes from sbrk + mmap) 
2014/02/20 09:51:49 INFO   usmblks:            0 
2014/02/20 09:51:49 INFO   fsmblks:          400 
2014/02/20 09:51:49 INFO   uordblks:       82960   (bytes used) 
2014/02/20 09:51:49 INFO   fordblks:       52208   (bytes free) 
2014/02/20 09:51:49 INFO   keepcost:       32816   (bytes in releasable chunk) 
2014/02/20 09:51:49 INFO  
2014/02/20 09:51:49 INFO Number of files: 2 
2014/02/20 09:51:49 INFO Number of files transferred: 1 
2014/02/20 09:51:49 INFO Total file size: 27.98M bytes 
2014/02/20 09:51:49 INFO Total transferred file size: 27.98M bytes 
2014/02/20 09:51:49 INFO Literal data: 27.98M bytes 
2014/02/20 09:51:49 INFO Matched data: 0 bytes 
2014/02/20 09:51:49 INFO File list size: 93 
2014/02/20 09:51:49 INFO File list generation time: 1.277 seconds 
2014/02/20 09:51:49 INFO File list transfer time: 0.000 seconds 
2014/02/20 09:51:49 INFO Total bytes sent: 27.99M 
2014/02/20 09:51:49 INFO Total bytes received: 34 
2014/02/20 09:51:49 INFO  
2014/02/20 09:51:49 INFO sent 27.99M bytes  received 34 bytes  11.20M bytes/sec 
2014/02/20 09:51:49 INFO total size is 27.98M  speedup is 1.00 
slm
fonte