dicas de uso do rsync

dicas do site: https://e-tinet.com/linux/sincronizacao-de-arquivos-no-linux-rsync/

ALGUMAS VANTAGENS E CARACTERÍSTICAS DO COMANDO RSYNC

  • É eficiente copiar e sincronizar arquivos para ou a partir de um computador remoto.
  • Suporta cópia de links, propriedades de arquivos como usuário, grupos e permissões.
  • É mais rápido do que o scp ( Secure Copy ), porque rsync usa protocolo de atualização remota que permite transferir apenas as diferenças entre dois conjuntos de arquivos. Na primeira vez, ele copia todo o conteúdo de um arquivo ou um diretório de origem para o destino, mas a partir da próxima vez, ele copia apenas os blocos alterados e bytes para o destino.
  • Rsync consome menos banda , uma vez que usa o método de compressão e descompressão durante o envio e recebimento de dados em ambas as extremidades.

A SINTAXE BÁSICA DO COMANDO RSYNC

# Rsync origem destino opções

ALGUMAS OPÇÕES DO COMANDOS RSYNC

  1. -V: verbose
  2. -R: cópias de dados de forma recursiva (mas não preservam timestamps e permissão durante a transferência de dados
  3. -A: modo de arquivamento, o modo de arquivo permite a cópia de arquivos de forma recursiva e também preserva links simbólicos, permissões de arquivos, posses usuário e grupo e timestamps
  4. -Z: arquivos serão comprimidos
  5. -H: legíveis, saída em um formato legível para humano (esse é muito bom)

COMO INSTALAR O RSYNC NO SEU COMPUTADOR COM LINUX

# yum install rsync (para distribuições baseadas em Red Hat)
# apt-get install rsync (para distribuições baseadas em Debian, o Ubuntu por exemplo)

Não esqueça de ver o nosso Ebook Grátis sobre Ubuntu Linux, o Curso Linux Ubuntu, com ele você vai aprender muitos comando para iniciar no Ubuntu.

1. COMO COPIAR / SINCRONIZAR ARQUIVO E DIRETÓRIO EM UM COMPUTADOR LOCAL COM RSYNC

Este comando irá sincronizar um único arquivo em uma máquina local. Aqui neste exemplo, o arquivo planilha.xls está sendo copiado / sincronizado para o diretório /tmp/backups 

[root@e-tient]# rsync -zvh planilha.xls /tmp/backups/
created directory /tmp/backups
planilha.xls
sent 14.71M bytes received 31 bytes 3.27M bytes/sec 

total size is 16.18M speedup is 1.10

No exemplo acima, você pode ver que, se o destino não existe o rsync irá criar um diretório automaticamente.

Leia também …   5 Grandes Empresas que Utilizam Sistema Operacional Linux com Muito Sucesso

COPIAR / SINCRONIZAR UM DIRETÓRIO NO COMPUTADOR LOCAL

O comando abaixo irá transferir ou sincronizar todos os arquivos de um diretório para outro diretório na mesma máquina.

Aqui neste exemplo, /var/apt/apt/archives contém alguns arquivos de pacotes .deb

[root@e-tinet]# rsync -avzh  /var/apt/apt/archives /tmp/backups/

sending incremental file list

/var/apt/apt/archives
...
sent 4.99M bytes  received 92 bytes  3.33M bytes/sec

total size is 4.99M  speedup is 1.00

 

2. COPIAR / SINCRONIZAR ARQUIVOS E DIRETÓRIO COM UM COMPUTADOR REMOTO

Este comando irá sincronizar um diretório a partir de uma máquina local para uma máquina remota.

Por exemplo : Existe uma pasta no seu computador local o mesmo do exemplo anterior “/var/apt/apt/archives”, que contém alguns pacotes .deb,  se quiser que o conteúdo desse diretório local seja enviado para um servidor remoto, você pode usar comando a seguir.

[root@e-tinet]$ rsync -avz /var/apt/apt/archives root@10.1.1.1:/tmp/

root@10.1.1.1's password:

sending incremental file list

...
sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec

total size is 4991313  speedup is 1.00

COPIAR / SINCRONIZAR UM DIRETÓRIO REMOTO PARA UM COMPUTADOR LOCAL

Este comando irá ajudá-lo a sincronizar um diretório remoto para um diretório local. Aqui neste exemplo, um diretório:

/home/e-tinet/textos  que está em um servidor remoto está sendo copiado em seu computador local em /tmp/textos.

 

[root@pedro]# rsync -avzh root@10.1.1.1:/home/e-tinet/textos /tmp/textos

root@10.1.1.1's password:

receiving incremental file list

created directory /tmp/textos

....
sent 91 bytes  received 4.99M bytes  322.16K bytes/sec

total size is 4.99M  speedup is 1.00

3. COMO USAR O RSYNC RODANDO COM O SSH

Com rsync, podemos usar o SSH ( Secure Shell ) para transferência de dados, usando SSH durante a transferência de nossos dados eles estarão seguros.

Além disso, quando usamos o rsync precisamos informar o usuário / senha, portanto, usando SSH seu login e senha serão enviados de forma criptografada.

Leia também …   Servidor Apache – Conheça o Servidor Web Mais Utilizado no Mundo

COPIAR UM ARQUIVO DE UM SERVIDOR REMOTO PARA UM SERVIDOR LOCAL COM SSH

Para especificar um protocolo com rsync usamos o parametro ” -e “.  Aqui neste exemplo, iremos utilizar ” ssh .

 

root@e-tiner]# rsync -avzhe ssh root@10.1.1.1:/root/install.log /tmp/

root@10.1.1.1's password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  1.48K bytes/sec

total size is 30.74K  speedup is 3.77

COPIAR UM ARQUIVO DE UM SERVIDOR LOCAL PARA UM SERVIDOR REMOTO COM SSH

[root@pedro]# rsync -avzhe ssh planilha.xls root@10.1.1.1:/backups/

root@10.1.1.1's password:

sending incremental file list

planilha.xls

sent 14.71M bytes  received 31 bytes  1.28M bytes/sec

total size is 16.18M  speedup is 1.10

4. MOSTRAR PROGRESSO NA TRANSFERÊNCIA DE DADOS COM RSYNC

Para mostrar o progresso durante a transferência de dados de uma máquina para outra máquina, podemos usar  o ‘–progress’.

[root@e-tinet# rsync -avzhe ssh --progress /home/arquivos root@10.1.1.1:/root/arquivos

root@10.1.1.1's password:

sending incremental file list

created directory /root/arquivos
/home/arquivos/texto.txt
           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)
...
sent 4.99M bytes  received 92 bytes  475.56K bytes/sec

total size is 4.99M  speedup is 1.00

 

5. USAR A OPÇÃO –INCLUDE E –EXCLUDE

Estas duas opções permite incluir e excluir arquivos de um copias / sincronização. Aqui neste exemplo, o comando rsync irá incluir arquivos e diretórios apenas que começam com ‘ M ‘ e excluir todos os outros arquivos e diretórios. OBS.: Excluir da cópia não excluir o arquivo do sistema de arquivos.

[root@e-tinet]# rsync -avze ssh --include 'm*' --exclude '*' root@10.1.1.2:/var/log/ /root/log

root@10.1.1.2's password:

receiving incremental file list

created directory /var/log

./

Requirename

Requireversion

sent 67 bytes  received 167289 bytes  7438.04 bytes/sec

total size is 434176  speedup is 2.59

6. USO DE OPÇÃO –DELETE

Se um arquivo ou pasta não existe na origem, mas já existe no destino, você pode apagar o arquivo / diretório existente.

Podemos usar ‘ —delete‘ para apagar os arquivos que não existem no diretório de origem.

Se a origem e  destino estiver  em sincronia, vamos fazer um teste. Crie um arquivo teste.txt no destino.

[root@e-tinet]# touch teste.txt
[root@e-tinet]# rsync -avz --delete root@10.1.1.1:/home/pedrod .
receiving file list ... done
deleting teste.txt
./
sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

Uma pequena dica adicional: Tome cuidado com essa opção.

7. DEFINA O TAMANHO MÁXIMO DE ARQUIVOS QUE SERÃO TRANSFERIDOS

Você pode especificar o parâmetro “–max-size” para definir o tamanho máximo do arquivo.

Exemplo: Um arquivo de 200k , então este comando irá transferir apenas os arquivos que são iguais ou menores que 200k .

[root@e-tinet]# rsync -avzhe ssh --max-size='200k' /var/log/ root@10.1.1.2:/root/log

root@10.1.1.2's password:

sending incremental file list

created directory /root/log

...
sent 189.79K bytes  received 224 bytes  13.10K bytes/sec

total size is 38.08M  speedup is 200.43

8. APAGAR AUTOMATICAMENTE ARQUIVOS DA ORIGEM APÓS A TRANSFERÊNCIA BEM SUCEDIDA

Agora, vamos imaginar que você tenha um servidor web principal e um servidor de backup, é feito um backup diário para esse servidor de backup, agora você não quer manter essa cópia local do backup no seu servidor web.

Leia também …   Pendrive não formata? Veja Aqui 5 Soluções Para Resolver o Problema

Então, você vai esperar até que a transferência seja concluída e, em seguida, apagar aqueles arquivos de backup local manualmente?

Claro que não. Esta exclusão automática pode ser feito usando a opção ” –-remove-source-files” .

Seria praticamente um comando “mv”, mas ele pode ser até executado remotamente.

[root@e-tinet]# rsync --remove-source-files -zvh img.jpg /tmp/backups/

img.jpg

sent 14.71M bytes  received 31 bytes  4.20M bytes/sec

total size is 16.18M  speedup is 1.10

9. USAR O PARÂMETRO –DRY-RUN COM O RSYNC

Se você está aprendendo a trabalhar com rsync e não sabe exatamente um parâmetro ou outro vai fazer, tome muito cuidado pois o Rsync poderá realmente estragar sua pasta de destino, e infelizmente o Ctrl + Z não funciona nesse caso.

Usando esse parâmetro o Rsync não vai fazer nenhuma alteração no destino, apenas vai mostrar o resultado do comando normalmente, assim fica fácil você encontrar algum erro e não correr o risco de fazer uma cópia desastrosa.

root@e-tinet]# rsync --dry-run --remove-source-files -zvh texto.txt /tmp/backups/

texto.tar

sent 35 bytes  received 15 bytes  100.00 bytes/sec

total size is 16.18M  speedup is 323584.00 (DRY RUN)

10. DEFINIR LIMITE DE BANDA DE TRANSFERÊNCIA DE ARQUIVOS

Você pode configurar o limite de banda durante a transferência dos arquivos de uma máquina para outra usando o  ‘ —bwlimit’.

[root@e-tinet]# rsync --bwlimit=100 -avzhe ssh  /var/log/  root@10.1.1.2:/root/log/
root@10.1.1.2's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s