Como fazer backup de Linux? 15 Exemplos de comando rsync

Rsync significa sincronização remota.

Rsync é usado para executar a operação de backup no UNIX / Linux.

O utilitário rsync é usado para sincronizar os arquivos e diretórios de um local para outro de forma eficaz. O local do backup pode estar no servidor local ou no servidor remoto.

Recursos importantes do rsync

  • Velocidade: Primeira vez, rsync replica todo o conteúdo entre os diretórios de origem e de destino. Da próxima vez, rsync transfere apenas os blocos ou bytes alterados para o local de destino, o que torna a transferência muito rápida.
  • Segurança: rsync permite a criptografia de dados usando o protocolo ssh durante a transferência.
  • Menos largura de banda: rsync usa compressão e descompressão de bloco de dados por bloco no final de envio e recebimento, respectivamente. Assim, a largura de banda usada pelo rsync será sempre menor em comparação com outros protocolos de transferência de arquivos.
  • Privilégios: Nenhum privilégio especial é necessário para instalar e executar o rsync

Sintaxe

$ rsync options source destination

A origem eo destino podem ser locais ou remotos. Em caso de remoto, especifique o nome de login, nome do servidor remoto e local.

Exemplo 1. Sincronizar dois diretórios em um servidor local

Para sincronizar dois diretórios em um computador local, use o seguinte comando rsync -zvr.

$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes  received 1098 bytes  54966.00 bytes/sec
total size is 44867  speedup is 1.63
$

No exemplo rsync acima:

  • -z é para permitir a compressão
  • -v verbose
  • -r indica recursivo

Agora vamos ver o carimbo de data / hora em um dos arquivos que foram copiados de origem para destino. Como você vê abaixo, o rsync não preservou os carimbos de data / hora durante a sincronização.

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 bin  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin  949 Sep  2  2009 /root/temp/sva.xml

Exemplo 2. Preserve timestamps durante a sincronização usando rsync -a

Rsync opção -a indica modo de arquivo. -uma opção faz o seguinte,

  • Modo recursivo
  • Preserva links simbólicos
  • Preserva permissões
  • Conserva timestamp
  • Preserva proprietário e grupo

Agora, executando o mesmo comando fornecido no exemplo 1 (Mas com a opção rsync -a) como mostrado abaixo:

$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes  received 1104 bytes  55206.00 bytes/sec
total size is 44867  speedup is 1.63
$

Como você vê abaixo, o rsync preservou timestamps durante a sincronização.
$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /root/temp/sva.xml

Exemplo 3. Sincronizar apenas um arquivo

Para copiar apenas um arquivo, especifique o nome do arquivo para o comando rsync, conforme mostrado abaixo.

$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys

sent 42 bytes  received 12380 bytes  3549.14 bytes/sec
total size is 12288  speedup is 0.99

Exemplo 4. Sincronizar arquivos de local para remoto

Rsync permite sincronizar arquivos / diretórios entre o sistema local e remoto.

$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname

sent 15810261 bytes  received 412 bytes  2432411.23 bytes/sec
total size is 45305958  speedup is 2.87

Ao fazer a sincronização com o servidor remoto, você precisa especificar nome de usuário e endereço IP do servidor remoto. Você também deve especificar o diretório de destino no servidor remoto. O formato é username @ machinename: path

Como você vê acima, ele pede senha enquanto faz rsync de local para servidor remoto.

Às vezes, você não deseja inserir a senha enquanto faz o backup de arquivos do servidor local para o remoto. Por exemplo, se você tiver um script de shell de backup, que copia arquivos de local para servidor remoto usando rsync, você precisará da capacidade de rsync sem precisar digitar a senha.

Para isso, a configuração de senha ssh menos de login como explicamos anteriormente.

Exemplo 5. Sincronizar arquivos do remoto para o local

Quando você deseja sincronizar arquivos de remoto para local, especifique caminho remoto no caminho de origem e local no destino, conforme mostrado abaixo.

$ rsync -avz thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes  received 15810230 bytes  2432405.54 bytes/sec
total size is 45305958  speedup is 2.87

Exemplo 6. shell remoto para sincronização

Rsync permite especificar o shell remoto que você deseja usar. Você pode usar rsync ssh para habilitar a conexão remota protegida.

Use rsync -e ssh para especificar qual shell remota usar. Nesse caso, o rsync usará ssh.

$ rsync -avz -e ssh thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames

sent 406 bytes  received 15810230 bytes  2432405.54 bytes/sec
total size is 45305958  speedup is 2.87

Exemplo 7. Não sobrescrever os arquivos modificados no destino

Em uma situação de sincronização típica, se um arquivo for modificado no destino, talvez não desejemos substituir o arquivo com o arquivo antigo da origem.

Use rsync -u opção para fazer exatamente isso. (Ou seja, não substituir um arquivo no destino, se ele é modificado). No exemplo a seguir, o arquivo chamado Basenames já está modificado no destino. Portanto, ele não será substituído pelo rsync -u.

$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root        4096 Sep  2 11:35 Basenames

$ rsync -avzu thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/

sent 122 bytes  received 505 bytes  114.00 bytes/sec
total size is 45305958  speedup is 72258.31

$ ls -lrt
total 39088
-rwxr-xr-x 1 root root        4096 Sep  2 11:35 Basenames

Exemplo 8. Sincronize apenas a Estrutura da Árvore de Diretórios (não os arquivos)

Use a opção rsync -d para sincronizar apenas a árvore de diretórios da origem com o destino. O exemplo a seguir, sincronizar apenas a árvore de diretórios de maneira recursiva, não os arquivos nos diretórios.

$ rsync -v -d thegeekstuff@192.168.200.10:/var/lib/ .
Password:
receiving file list ... done
logrotate.status
CAM/
YaST2/
acpi/

sent 240 bytes  received 1830 bytes  318.46 bytes/sec
total size is 956  speedup is 0.46

Exemplo 9. Visualizar o progresso do rsync durante a transferência

Quando você usa rsync para backup, você pode querer saber o progresso do backup. Ou seja, quantos arquivos são cópias, a que taxa ele está copiando o arquivo, etc.

A opção rsync -progress exibe o progresso detalhado da execução do rsync como mostrado abaixo.

$ rsync -avz --progress thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ...
19 files to consider
./
Basenames
     5357568 100%   14.98MB/s    0:00:00 (xfer#1, to-check=17/19)
Conflictname
       12288 100%   35.09kB/s    0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes  received 15810211 bytes  2108082.27 bytes/sec
total size is 45305958  speedup is 2.87

Você também pode usar rsnapshot utilitário (que usa rsync) para backup de servidor linux locais ou servidor linux remoto de backup .

Exemplo 10. Excluir os arquivos criados no destino

Se um arquivo não estiver presente na origem, mas estiver presente no destino, talvez você queira excluir o arquivo no destino durante o rsync.

Nesse caso, use a opção -delete conforme mostrado abaixo. A opção de exclusão do rsync exclui os arquivos que não estão no diretório de origem.

# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt

$ rsync -avz --delete thegeekstuff@192.168.200.10:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting new-file.txt
./

sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

O destino tem o novo arquivo chamado new-file.txt, quando sincronizado com a fonte com a opção -delete, removeu o arquivo new-file.txt

Exemplo 11. Não criar novo arquivo no destino

Se você quiser, você pode atualizar (Sincronizar) apenas os arquivos existentes no destino. No caso de origem tem novos arquivos, que não está lá no destino, você pode evitar a criação desses novos arquivos no destino. Se você quiser esse recurso, use a opção -existing com o comando rsync.

Primeiro, adicione um novo arquivo.txt na origem.

  [/ Var / lib / rpm] $> new-file.txt

Em seguida, execute o rsync a partir do destino.

$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2's password:
receiving file list ... done
./

sent 26 bytes  received 419 bytes  46.84 bytes/sec
total size is 88551424  speedup is 198991.96

Se você ver a saída acima, ele não recebeu o novo arquivo new-file.txt

Exemplo 12. Visualizar as Alterações Entre Fonte e Destino

Esta opção é útil para visualizar a diferença nos arquivos ou diretórios entre origem e destino.

Na fonte:

$ ls -l /var/lib/rpm
-rw-r--r-- 1 root root  5357568 2010-06-24 08:57 Basenames
-rw-r--r-- 1 root root    12288 2008-05-28 22:03 Conflictname
-rw-r--r-- 1 root root  1179648 2010-06-24 08:57 Dirnames

No destino:

$ ls -l /root/temp
-rw-r--r-- 1 root root    12288 May 28  2008 Conflictname
-rw-r--r-- 1 bin  bin   1179648 Jun 24 05:27 Dirnames
-rw-r--r-- 1 root root        0 Sep  3 06:39 Basenames

No exemplo acima, entre a origem eo destino, há duas diferenças. Primeiro, o proprietário eo grupo do nome de arquivo Dirname difere. Em seguida, o tamanho difere para o arquivo Basenames.

Agora vamos ver como rsync exibe essa diferença. -i exibe as alterações de item.

$ rsync -avzi thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
>f.st.... Basenames
.f....og. Dirnames

sent 48 bytes  received 2182544 bytes  291012.27 bytes/sec
total size is 45305958  speedup is 20.76
 Enviados 48 bytes recebidos 2182544 bytes 291012.27 bytes / seg  O tamanho total é 45305958 de velocidade é 20,76

Na saída, ele exibe cerca de 9 letras na frente do nome do arquivo ou nome do diretório indicando as alterações.

Em nosso exemplo, as letras na frente dos nomes de base (e Dirnames) diz o seguinte:

  > Especifica que um arquivo está sendo transferido para o host local.
 F representa que é um arquivo.
 S representa mudanças de tamanho estão lá.
 T representa mudanças de carimbo de data / hora estão lá.
 O proprietário alterado
 G grupo alterado.

Exemplo 13. Incluir e Excluir Padrão durante a Transferência de Arquivos

Rsync permite que você forneça o padrão que deseja incluir e excluir arquivos ou diretórios durante a sincronização.

$ rsync -avz --include 'P*' --exclude '*' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Packages
Providename
Provideversion
Pubkeys

sent 129 bytes  received 10286798 bytes  2285983.78 bytes/sec
total size is 32768000  speedup is 3.19

No exemplo acima, ele inclui apenas os arquivos ou diretórios que começam com ‘P’ (usando rsync include) e exclui todos os outros arquivos. (Usando rsync exclude ‘*’)

Exemplo 14. Não transfira arquivos grandes

Você pode dizer ao rsync para não transferir arquivos que sejam maiores do que um tamanho específico usando a opção rsync -max-size.

$ rsync -avz --max-size='100K' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggername

sent 252 bytes  received 123081 bytes  18974.31 bytes/sec
total size is 45305958  speedup is 367.35

Max-size = 100K faz rsync para transferir apenas os arquivos que são menores ou iguais a 100K. Você pode indicar M para megabytes e G para gigabytes.

Exemplo 15. Transferir o Ficheiro Completo

Uma das principais características do rsync é que ele transfere apenas o bloco alterado para o destino, em vez de enviar o arquivo inteiro.

Se a largura de banda da rede não for um problema para você (mas a CPU é), você pode transferir todo o arquivo, usando a opção rsync -W. Isso acelerará o processo rsync, pois não precisa executar a soma de verificação na origem e no destino.

#  rsync -avzW  thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp
Password:
receiving file list ... done
./
Basenames
Conflictname
Dirnames
Filemd5s
Group
Installtid
Name

sent 406 bytes  received 15810211 bytes  2874657.64 bytes/sec
total size is 45305958  speedup is 2.87

Anúncios

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s