Servidores VPS & Dedicado

SINCRONIZAÇÃO DE ARQUIVOS NO LINUX – 10 FORMAS DE USAR O RSYNC

Rsync é o comando utilizado para copiar e sincronizar arquivos e diretórios remotamente, e pode ser utilizado também em sistemas de arquivos local no Linux / Unix / Mac.

Com a ajuda do comando rsync, você pode copiar e sincronizar seus arquivos remotamente e localmente através de diretórios, em discos de  rede, realizar backups de dados e espelhamento entre dois computadores com Linux.

Eu particularmente utilizo muito o Rsync para fazer backups dos arquivos de configurações de servidores, pode ter certeza que ele já me ajudou muito. Estou escrevendo esse artigo pois essa semana o Rsync me salvou mais uma vez.

 

 

Eu estava realizando a atualização de uma aplicação feita em java / php e não fiz o backup antes de começar o procedimento de atualização, vários arquivos da atualização estavam com problema.

 

fazer sincronização de arquivo linux

Resultado: A aplicação parou de funcionar e graças a um backup automatizado feito com o Rsync consegui resolver o problema.

Este artigo explica 10 comandos, do básico e avançado para você sincronizar arquivos com o rsync,  transferir seus arquivos remotamente e localmente em computadores com Linux.

 

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:  phpMyAdmin – Como instalar e utilizar para gerenciar banco de dados MySQL

COPIAR / SINCRONIZAR UM DIRETÓRIO NO COMPUTADOR LOCAL

O comando abaixo irá transferir ou sincronizar todos os arquivos 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.

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 .

Leia também:  Partição SWAP: Tudo Que Você Precisa Saber Para Criar E Gerenciar Esse Tipo de Partição No Linux

 

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:  Crontab: Entenda Como Agendar Tarefas No Linux De uma Vez Por Todas

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

Então é isso, tem muitas opções o Rsync é uma ferramenta muito utilizada. Hoje eu utilizo muito para fazer backup e sincronização de arquivos, tanto local como remoto.

Existe ainda a opção de configurar o Rsync como um serviço, mas isso é assunto para outro artigo.

 

E você? O que achou? Já utilizou o Rsync antes? Deixe um comentário com sua experiência.

 116 total views,  2 views today

Artigos relacionados