Home / Dicas e Tutoriais / Como Usar o Comando RSync Para Transferir Dados Para Diretórios Locais e Remotos

Como Usar o Comando RSync Para Transferir Dados Para Diretórios Locais e Remotos

Olá pessoal,

Hoje, vou postar este tutorial sobre o RSync, cobrindo o uso básico deste poderoso utilitário.
O Rsync é mais do que um comando ou um simples programa. Ele pode te oferecer funcionalidades poderosas como a de sistemas de backup.

Imagine que você tenha dois servidores de arquivos, um em seu local, e outro em outro local, (como outro bairro, ou cidade, estado, país e continente). E você precisa fazer um backup de um para o outro, ou que o conteúdo dos dois sejam sincronizados. O Rsync pode fazer isso para você. E mesmo para uma necessidade mais simples como fazer backup ou sincronizar arquivos em diretórios de máquinas em sua rede local, ou mesmo na mesma máquina.

O que é Rsync?

Rsync, que é uma abreviação de Remote Sync, ou seja, “sincronização remota”, é uma ferramenta de sincronização de arquivos locais e remotos. Ele usa um algoritmo que minimiza a quantidade de dados copiados movendo apenas as partes de arquivos que foram alterados. Isso é o que chamamos de cópia incremental, em um processo de backup. Claro que previamente é preciso ter um backup completo, para que nas próximas vezes, ele faça o incremental.

Rsync é uma ferramenta muito flexível de sincronização habilitada para rede. Também pode se referir ao protocolo de rede desenvolvido para utilizar esta ferramenta.
Quando chamo o rsync neste tutorial, estou me referindo principalmente ao serviço, e não o protocolo.

Devido à sua presença em sistemas Unix-like, por vir incluído por padrão na maioria das distribuições Linux, ele se tornou muito popular como uma ferramenta incluído em scripts do sistema Linux.

Sintaxe Básica

A sintaxe básica do rsync é muito simples, e funciona de uma maneira que é semelhante ao ssh, scp e cp.

Ou seja, rsync parâmetro pasta-origem pasta-destino.

Para conhecer todos os parâmetros do rsync, veja através do comando “man rsync”.
Se quiser exportar a documentação oficial para um arquivo de texto, use o comando  “man rsync > rsync.txt” (pois a documentação tem 3 mil linhas).

Principais Parâmetros ou “Flags”

Aqui vamos analisar o comportamento de 10 parâmetros:

-r : Recursiva, ou seja, lê e opera nas subpastas e conteúdos também.
-a : Archive mode – Recursiva e preserva links simbólicos, arquivos especiais de dispositivo, hora de modificação, o grupo, proprietário e permissões.
-v : Aumenta a verbose.
-n : O mesmo que o –dry-run (veja mais abaixo).
-z : Comprime os dados durante a transferência.
-i : Verifica se os dados transferidos no destino são iguais os da origem.
-P : o mesmo que –partial ou –progress – mostra o progresso da transferência.
–delete : apaga arquivos desejados antes, durante ou após a tarefa de sincronização.
–include : filtro que pode ser usado para que no momento da tarefa que inclui os arquivos especificados.
–exclude : filtro que pode ser usado para que no momento da tarefa que exclui os arquivos especificados.
–dry-run : Usado para testar antes o seu comando, mostra o que seria alterado, sem realizar alterações.

Laboratório – Usos do Rsync

Preparação

Vamos fazer um lab para testar o funcionamento do Rsync?
Então vamos criar dois diretórios de teste e alguns arquivos de teste com os seguintes comandos:

cd ~
mkdir dir1
mkdir dir2
touch dir1/file{1..100}

Agora nós temos uma diretório chamado dir1 com 100 arquivos nele e o dir2 vazio.

1 – Tranferência Local Recursiva

A opção -r significa recursivo, o qual é necessário para fazer o sincronismo do diretórios.

Nós também podemos usar o parâmetro -a.

rsync -a dir1/ dir2

O parâmetro -a é uma combinação de opções, significa “archive” e é muito importante pois sincroniza de forma recursiva e preserva links simbólicos, arquivos especiais de dispositivo, hora de modificação, o grupo, proprietário e permissões.

O -a é mais comumente usado que o -r e geralmente é o que você vai mais precisar usar.

Uma Nota Importante

Você deve ter notado que há uma barra (/) no final do primeiro argumento nos comandos acima:

rsync -a dir1/ dir2

Isto é necessário e significa “o conteúdo do dir1”

A alternativa, sem a barra final, colocaria dir1, incluindo o diretório, dentro dir2. Isso criaria uma hierarquia que se parece com:

~/dir2/dir1/[files]

Por isso, sempre verifique seus argumentos antes de executar um comando rsync.

Testando um Comando Antes de Rodá-lo – Com e Sem a Barra

O Rsync fornece um método para fazer isso passando as opções -n ou –dry-run. O parâmetro -v (para detalhado) também é necessário para obter a saída apropriada:

rsync -anv ~/dir1/ ~/dir2
sending incremental file list
./
file1
file10
file100
file11
file12...
sent 1,654 bytes received 319 bytes 3,946.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)

Compare esta saída com a saída que nós temos quando removemos a barra. Repare que agora ele transferiu o diretório todo e não apenas o conteúdo.

rsync -anv ~/dir1 ~/dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12...
sent 1,667 bytes received 320 bytes 3,974.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)

2 – Usando o Rsync Via SSH Para Enviar ou Receber Arquivos/Pastas de Uma Máquina Remota

046_Rsync-Server-Your-remote-backup-server2_2 Essa parte é muito importante para transferir dados de forma segura, pela sua lan ou pela internet através de lugares distantes. Será necessário apenas que você possua acesso SSH para a máquina remota e rsync instalado em ambos os lados. Se for fazer um rsync remoto (o rsync usa acesso remoto via ssh) de ou para um servidor pela rede:

Sintaxe usando SSH

rsync parâmetro pasta-origem usuário@servidor:/pasta-destino Se caso o servidor remoto usar outra porta ssh diferente da tradicional 22, deve-se usar o parâmetro ‘ssh -p número-da-porta’. Exemplo: rsync -azvP ‘ssh -p 3000’ /dados/ fulano@192.168.0.50:/backup

Push – Enviando Arquivos/Diretórios

Depois de ter acesso SSH verificado em entre as duas máquinas, você pode sincronizar a pasta dir1 a um computador remoto usando a seguinte sintaxe (note que nós queremos transferir a pasta dir1 inteira, neste caso, portanto, omitiremos a barra à direita, após o “dir1” no comando):

rsync -a ~/dir1 username@remote_host:destination_directory

Isso é chamado de uma operação de “push”, porque ele empurra um diretório do sistema local para um sistema remoto.

Obs. Não precisava, mas eu fiz uma ilustração do que acontece, (usando duas máquinas com interface gráfica, para ficar melhor a visualização), acessando via VNC (apenas para mostrar) uma máquina remota em minha lan, e de minha máquina local, usei o rsync com ssh para copiar o diretório dir1 para a máquina remota.

Rsync-push

“Simple like that!” 😉

Pull – Puxando Arquivos/Diretórios

A operação oposta é “pull” (puxar). O Pull funciona de modo contrário, usado para sincronizar de um diretório remoto para o sistema local. No exemplo, o dir1 está no sistema remoto, em vez de nosso sistema local, a sintaxe é:

rsync -a username@máquina-remota:/home/username/dir1 diretório-local-de-sua-máquina

Então usei o comando:

rsync -a suporte@máquina-remota:/home/suporte/Documentos/pasta_teste/dir1 /home/cleuber/Desktop/MAOE/

Assim como o “cp” e ferramentas similares, a fonte é sempre o primeiro argumento, e o destino é sempre o segundo.

Obs. Novamente ilustrado, desculpem a piadinha, não resisti (risos)

rsync-pull

Obs. Claro, que se você quiser transferir dados via ssh de uma máquina que não esteja na mesma lan e sim através da internet, a máquina remota terá que ter o IP e nome nos serviços públicos de DNS, tais como o opendns, dns-omatic e etc.

3 – Compactando

Se você estiver transferindo arquivos que não foram compactados anteriormente, como arquivos de texto, você pode reduzir a transferência de rede, adicionando a compressão com a opção -z:
Obs. Essa compressão é para a transferência dos arquivos, e não gera um pacote do arquivo (tipo zip, rar, tar).

rsync -az origem destino

4 – Exibindo o Progresso

O parâmetro -P é muito útil. Ele combina as ações –progress e –partial. A primeira delas mostrará uma barra de progresso para as transferências e o segundo permite retomar transferências interrompidas:

rsync -azvP ~/dir1 ~/dir2
sending incremental file list
./
file1
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=99/101)
file10
           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=98/101)
file100
           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=97/101)
file11
           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=96/101)
. . .

Se executar o comando novamente, vamos obter uma saída mais curta, porque nenhuma mudança foi feita.

Isto ilustra a capacidade do rsync usar a hora de modificação (ou chamado de “time stamp” também) para determinar se as alterações foram feitas.

rsync -azvP ~/dir1 ~/dir2
sending incremental file list

sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00

Podemos atualizar a hora de modificação em alguns dos arquivos e ver que rsync inteligentemente re-copia apenas os arquivos alterados:

touch dir1/file{1..10}
rsync -azvP ~/dir1 ~/dir2
sending incremental file list
file1
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=99/101)
file10
           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=98/101)
file2
           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=87/101)
file3
           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=76/101)
. . .

5 – Excluindo Arquivos no Destino, Que Não Existem Mais na Origem.

Imagine que você já sincronizou a pasta de origem com a de destino, mas após isso, o conteúdo da pasta de origem tenha sido todo apagado.
Se isso acontecer, a pasta de destino continuará com os arquivos lá.

Se você tem a necessidade não apenas de transferir dados, mas manter a origem e o destino realmente em sincronia, é necessário que quando arquivos na origem tenham sido removidos, os arquivos do diretório de destino sejam removidos também.

Nós podemos fazer isso usando a opção –delete que apenas apaga documentos no destino e apenas se eles não estiverem mais na origem.

Então abaixo, eu tenho o dir1 (origem) vazio, mas o dir2 (destino) com os 100 arquivos lá. Com o comando abaixo, ele irá apagar os arquivos no destino, (quando eles já não existirem na origem).

rsync -azvP --delete ~/dir1 ~/dir2

Obs. Nesse caso, se a origem ainda tiver os arquivos lá, e você rodar esse comando, ele apenas copiará os arquivos para o destino novamente, e não apagará nada (pois eles permanecem na origem).

Agora, apague manualmente os arquivo da origem e rode o comando novamente e perceberá que ele os apagará no destino também.

E se por exemplo, você apagar, apenas os 30 primeiros documentos na pasta de origem, e rodar o comando, ele apagará apenas os mesmos 30 documentos na pasta destino.

Capiche? 😉

Isso é legal se você configurar no Cron para rodar o comando rsync com “–delete”, para sincronizar os dois locais, automaticamente dentro de uma agenda que você desejar, como por exemplo, diariamente as 21:00hs. Mas falarei dos agendamentos no Cron um pouco mais abaixo.

6 – Filtrando Arquivos – Exclude ou Include

Se você quiser excluir ou incluir certos arquivos ou diretórios localizados dentro de um diretório que você está sincronizando, poderá usar as opções –exclude e –include. Com esses dois parâmetros você poderá incluir ou ignorar arquivos específicos durante a sincronia.

Alguns Casos de Uso do Exclude e Include

Excluir uma pasta específica.

Supomos que eu quero excluir do backup uma subpasta chamada “teste”:

–exclude ‘teste’ (sem digitar o caminho, pois o caminho de origem já é descrito logo após).

Se houver várias pastas com o nome ‘teste’, como ‘teste1′, teste2′, e teste3’, basta usar o caractere ‘*’:

–exclude ‘teste*’

rsync -azvP --exclude 'teste*' ~/dir1 ~/dir2

Excluir um arquivo específico

rsync -avz --exclude 'dir1/file3.txt' ~/dir1/ ~/dir2

Também é possível criar uma lista de exclusões (com pastas e arquivos na lista)

Você pode criar um arquivo de texto chamado “exclude.txt”. E vamos dizer que eu salvei este arquivo em minha pasta “home”, e com o seguinte conteúdo:

file1.txt
/home/cleuber/dir1/file4.txt
/home/cleuber/dir1/teste/

Daí o comando ficaria assim:

rsync -azvP --exclude-from='/home/cleuber/exclude.txt' ~/dir1 ~/dir2

Exclude e Include Juntos em um Rsync de pull remoto.

Neste exemplo, o rsync, irá fazer um pull (puxar), copiar do servidor remoto o conteúdo da pasta /var/log e colar esse conteúdo na pasta local /root/log, e irá incluir apenas os arquivos quem começarem com a letra ‘M’ e excluir todos os outros arquivos e diretórios do sincronismo. Usaremos a combinação de flags “avze”

rsync -avze ssh --include 'm*' --exclude '*' root@192.168.0.25:/var/log/ /root/log

Rsync e Cron – Automatizando Backupes

O Rsync que rodamos aqui nos testes foram feitos manualmente por nós e executou corretamente conforme nossa necessidade.

Agora, imagine que você queira que o rsync sincronize os diretórios origem e destino, mas rodando automaticamente dentro de uma agenda. Isso é possível!
Basta adicionar um agendamento usando o Cron. Muito legal não é?!

Obs. Autenticação em máquinas remotas via ssh:

O comando do rsync configurado dentro do cron, tem um detalhe. É que quando você roda o rsync manualmente via ssh em máquinas remotas, será solicitada uma senha, que você deverá digitar.

Mas agendando via cron para rodar em um horário que você não estará presente, a tarefa não se concluirá por causa da pendência da entrada da senha, mas eu tenho a solução!

Autorizando Acesso SSH Usando Chaves – Sem Senha

chaves1

Para fazer isso, basta autorizar a máquina destino no servidor origem, para que a senha do acesso ssh não seja solicitada.
Você pode até pensar que isso seja inseguro, mas não é, pois na verdade o acesso via SSH será realizado através da leitura de chave pública, estabelecendo uma confiança entre o servidor e o cliente, permitindo o acesso somente quando validadas as chaves. Para fazer isso leia este artigo:

Autorizando Acesso SSH Com Chaves – Sem Solicitar Senha

Se seguiu o tutorial do link corretamente, agora não aparecerá mais o pedido de digitação da senha no acesso ssh ao servidor destino configurado, e você poderá adicionar no Cron seu rsync remoto via ssh sem problemas.

5 Casos de Uso do Rsync e Cron Juntos

Usar o Rsync e o Cron pode ser muito útil. Vou descrever 4 casos de uso, e a junção de casos, para ter por exemplo, no último caso, uma automatização do backup de um servidor, que irá rodar uma compactação dos arquivos alvo, criar um arquivo só compactado, com a data do backup no nome do arquivo e enviado para outra máquina remota diariamente as 2:00 da manhã.
Muito chique não é?!

Uma vez configurado um procedimento desse, você não precisará fazer mais nada, a não ser checar se os arquivos estão lá e de tempos em tempos apagar os backups mais antigos que não desejar.

Saiba mais sobre o Cron: Cron – (Agendador de Tarefas do Linux).
Saiba mais sobre script de compactação e agendamentos no Cron.

Caso 1 – Em 1 Passo

Agendando no Cron com comando inteiro de RSync remoto, buscando todos os arquivos, sem compactação.

Vamos fazer com que o Cron rode um comando de rsync em um cliente, para puxar (pull), arquivos de um servidor remoto, e salvá-los localmente, diariamente as 2:00 da manhã.
Quero copiar o conteúdo da pasta /empresa/contabilidade que está em um servidor remoto, e colá-lo na minha pasta local ~/Documentos/backupes/contabilidade.

Vamos editar o crontab com o comando:

crontab -e

Obs. Se você nunca usou o Cron, ele irá pedir na primeira vez que você escolha o editor de texto que prefere usar para editá-lo. Eu gosto do nano, pois o considero mais prático.

Agora, adicione a seguinte linha em seu cron:

01 02 * * * rsync -avz usuário@ip-do-servidor:/empresa/contabilidade ~/Documentos/backupes/contabilidade

Sintaxe do Cron

*  *  *  *  *       comando a ser executado
-  -  -  -  -
|  |  |  |  +-----  dia da semana    (0 -  6) (domingo=0)
|  |  |  +--------  mês              (1 - 12)
|  |  +-----------  dia do mês       (1 - 31)
|  +--------------  hora             (0 - 23)
+-----------------  minuto           (0 - 59)

Caso 2 – Em 2 Passos

Criando script de envio de arquivos sem compactação e depois agendando a execução dele no cron

Passo 1 – Criar script de envio de arquivos – RSync remoto, buscando todos os arquivos, sem compactação. 
Passo 2 – Agendando execução do script no Cron

Passo 1 – Criar script de envio de arquivos

Você poderá criar um script de backup e no cron, ao invés do comando do rsync, bastará colocar o caminho do seu arquivo de script.

Abra seu editor de texto favorito e crie um script como esse:

#!/bin/bash
rsync -avz usuário@ip-do-servidor:/empresa/contabilidade ~/Documentos/backupes/contabilidade

Agora, salve, feche e dê permissão de execução do seu script. (eu salvei na raiz e dei o nome de backup-contabilidade).

sudo chmod +x /backup-contabilidade.sh

Passo 2 – Agendando no Cron a execução do script

E depois no Cron,

crontab -e

… ao invés de inserir o comando todo, ficaria apenas assim:

01 02 * * * /backup-contabilidade.sh

Mais limpo não é?!

Caso 3 – Em 1 Passo

Agendando Através das Pastas do CronUsando script de RSync remoto, buscando todos os arquivos, sem compactação.

Mas se quiser fazer algo mais simples, ou seja, que rode de hora em hora, 1 vez semanalmente, mensalmente e assim por diante, existe um meio bem simples. E nesse caso, não use o “crontab -e”.

Apenas copie e cole seu script de backup (previamente criado no caso2) em uma das pastas do cron específicas que o rodarão conforme o nome de cada pasta.
Temos as seguintes pastas na estrutura de arquivos do Cron:

cd /etc/

cron.hourly      => de hora em hora
cron.daily         => diariamente
cron.weekly      => semanalmente
cron.monthly   => mensalmente

Basta colar seu script em uma delas de sua escolha e pronto.

sudo cp /etc/cron.a-pasta-de-agendamento-que-quiser

Caso 4 – Em 4 Passos

Vamos fazer um script de backup com compactação e timestamp no nome do arquivo e agendar a execução dele no cron. E vamos fazer um script de transferência para outro servidor do backup compactado que foi realizado e agendar a execução dele.

Passo 1 – Criando Script de Compactação de seu backup com Tar.Gz, usando Time Stamp.
Passo 2 – Agendando no Cron Usando o Script de Compactação e Salvando em diretório local de backup.
Passo 3 – Criar Script de Envio usando o Rsync remoto para máquina cliente.
Passo 4 – Agendando no Cron Usando o previamente criado script de RSync remoto dos arquivos compactados.

Passo 1  – Criando Script de Compactação

Você pode também, através de um script, previamente compactar no servidor remoto, seus arquivos de backup, colocar o pacote de backup em outra pasta com timestamp no nome, ou seja, com a data de backup gravado no nome do arquivo compactado, e então agendar via cron para um horário, e depois agendar via cron em um horário posterior transferi-lo para outro lugar.

1 – Acesse seu servidor remoto siga os passos:

2 – Vamos criar uma pasta onde salvar os arquivos compactados com o “sudo mkdir /backupes”.

3 – Agora, use seu editor de texto para criar um script de compactação como este abaixo:

#!/bin/bash
 #Propósito = Backup de Arquivos em "/empresa/contabilidade"
 # START 
 TIME=`date +%b-%d-%y      `     # Este comando irá adicionar a data no Nome do Arquivo de Backup. 
 FILENAME=backup-$TIME.tar.gz    # Aqui eu defino o formato do nome do arquivo de backup. 
 SRCDIR=/empresa/contabilidade   # Local Fonte - onde estão os arquivos a serem feitos backup. 
 DESDIR=/backupes                # Local Destino - onde o Backup será salvo. 
 tar -cpzf $DESDIR/$FILENAME $SRCDIR 
#END

4 – Salve seu script e dê permissão de execução, (no meu caso salvei como “compact-files-cont.sh”)

sudo chmod +x /compact-files-cont.sh

Passo 2 – Agendando no Cron para realizar o backup local compactado a 1:00 da manhã.

E agendamos no Cron para rodar diariamente a 1:00 da manhã:

crontab -e
01 01 * * * /compact-files-cont.sh

Agora, teremos, (depois da execução do script pelo cron), um arquivo apenas, compactado e colocado na pasta da raiz /backupes.
O arquivo terá o nome nesse formato: “backup-data-do-backup.tar.gz”

Passo 3 – Criando Script de Rsync para Buscar Backup Compactado.

A para transmitir esse backup para um cliente, seja ele uma estação ou um outro servidor, via pull (puxar), basta, no cliente, fazer o mesmo que fizemos antes, alterando apenas a pasta que ele irá buscar do destino.

Crie um script em seu cliente:

#!/bin/bash
rsync -avz usuário@ip-do-servidor:/backupes ~/Documentos/backupes/contabilidade

Agora, salve, feche e dê permissão de execução do seu script. (eu salvei na raiz e dei o nome de backup-contabilidade).

sudo chmod +x /backup-contabilidade.sh

Passo 4 – Agendando no Cron o Script de Rsync para buscar backup dos arquivos compactados as 2:00 da manhã.

E depois no Cron, agende para rodar as 2:00 da manhã.

crontab -e
01 02 * * * /backup-contabilidade.sh

UFA!!!

Caso 5 – Rodando Comando Remoto Via SSH

Aqui apenas uma observação;

Caso haja alguma dificuldade do Rsync ser executado remotamente, ou seja, de uma para outra máquina em outro IP, você pode usar o ssh para rodar um comando de rsync (ou qualquer outro comando sobre ssh). Nesse contexto, quando você roda um comando via ssh com a sintaxe “ssh usuário@server comando”, o comando será executado no destino remoto e você poderá ver a saída do comando em seu terminal, e tudo isso, sem que você faça login no servidor remoto. O ssh então é usado apenas para enviar o comando e ver a saída dele, e isso é muito útil.

Exemplo do Rsync sobre ssh:

ssh user@server-origem rsync -arzvP /pasta-a-se-fazer-backup user@server-destino:/pasta-de-destino-do-backup/

Você pode então rodar esse comando diretamente ou criar um script com essa sintaxe e nos dois casos, agendar no Cron se desejar (com comando direto ou apontando para um script), mas lembre-se que para que rode sozinho de forma agendada no Cron é preciso que não se exija senha de autenticação via ssh entre um servidor outro, como expliquei no artigo que mostrei mais acima sobre usar chaves de autenticação.

Visualizando o log de tarefas do Cron

Para ver se as tarefas rodaram adequadamente através da análise de logs, dê uma olhada neste artigo:
http://cleuber.com.br/index.php/2016/01/19/gerenciando-os-logs-do-cron

Conclusão

Rsync pode simplificar as transferências de arquivos através de conexões de rede e adicionar robustez a sincronização de diretórios.

A flexibilidade do rsync o torna uma boa opção para muitas operações diferentes no nível de arquivos.
O domínio da ferramenta Rsync lhe permitirá projetar operações de backup complexos e obter o controle refinado sobre o que é transferido e como.

É isso aí pessoal,

Tem mais alguma configuração bacana a sugerir? Alguma correção, Gostou? Comente aí e curta a nossa página.

Abraços,

Cleuber

About Cleuber

Cleuber Silva Hashimoto. Administrador

11 comments

  1. Cleuber, suponha que tenho 5 máquinas Windows e que ambas têm arquivos críticos que precisam ser salvos como backup. E que também tenho um servidor Linux. Nisso, há como usar o rsync do Linux para pegar esses dados dos PCs com o Windows? Se sim, como?

    Pesquisei e só encontrei app para Windows. O problema é que tenho que executar em cada máquina.

    Aí pergunto como que o rsync do Linux “enxergaria” o Windows remotamente? 😀

    Ah, belo artigo, parabéns!

    Abraço!

    • Valeu Wagner!
      Bom, também vi alguns apps para Windows, mas não o Rsync em si.
      O Rsync se comunica com outro Rsync, até onde eu sei.
      Nesse seu caso o que sugiro é fazer uma batch no Windows com comandos para copiar esses dados para algum lugar em sua rede.
      Eu faria o seguinte:
      1 – Criaria um share em um servidor Linux usando o samba, ou um compartilhamento de pasta em um servidor Windows.
      2 – Mapearia este share nas máquinas com Windows, em uma letra, tipo “M”, “Z”, de sua escolha.
      3 – Criaria um script em batch, salvaria como backup.bat
      4 – Usaria o “Agendador de tarefas do Windows” para rodar este script dentro de uma agenda a sua escolha.

      Um exemplo de script seria:

      ———————————————————-

      batch:
      cd /d “C:\pasta-a-fazer-backup\*.*”
      @SET DATE_FOLDER=%date:~7,2%-%date:~4,2%-%date:~10,4%
      SET “ACHIEVE_DIR=Z:\Pasta\do \backup”
      for /d %%a in (“*”) do xcopy “%%a\*.*” “%ACHIEVE_DIR%\” /s/h/e/k/f/c/y
      del *.* /s/q

      ———————————————————

      Neste exemplo acima ele copia os dados (usando o xcopy) para o mapeamento de rede “Z:/” na pasta determinada, e após o backup, ele apaga os dados na fonte.
      Se quiser manter os dados no diretório de origem, basta não incluir a linha final “del *.* /s/q”

      Após salvar o arquivo de “backup.bat” (ou outro nome com extensão .bat), basta criar uma tarefa simples no agendador de tarefas do Windows para rodar esta batizinha!

      😉

  2. Show !!! Muito Obrigado !!! Ótimo Post. Salvou minha Vida !!!! : )

  3. Reginaldo M.Santos

    Ola cleuberadmin, obrigado pelo post.

    Gostaria de seu auxili

    Tenho uma estrutura de pasta /…./empresas/ano/arquivos e desejo usar o rsync de forma a “incluir”somente as de ano x ex
    /…/”todas empresas”/2018/ para /copias/”todas empresas”/2018
    mantendo a estrutura empresas/ano
    Eu tentei usar os coringas * e ? mas nao tive sucesso por ser iniciante. Pensei em usar o exclude* include pasta mas nao consegui enchergar como…

    Se puder me ajudar ficarei muito grato.
    Abraços

  4. Boa noite cleuberadmin!
    Que tutorial maravilhoso! Me ajudou muito.
    Será que consegue me ajudar?
    Segui todas a ssua orientações e criei o backup no servidor remoto, consegui desligar o servidor remoto acrescentando o comando: sshpass -p ‘senha’ ssh root@host ‘shutdown -h now; exit’, após esse comando adicionei abaixo shutdow -h now para desligar o servidor de dados. Tudo roda muito bem quando executo o arquivo.sh, mas quando o coloco no crontab o servidor de dados não desliga! eu acho que o .sh não consegue “sair” do servidor remoto pelo criontab, mas não estou encontrando um caminho para desligar os dois com a certeza de que o backup foi executado.

Leave a Reply

x

Check Also

Elementary OS 6 Odin Lançado – Confira as Novidades

Desenvolver um sistema operacional não é ...