documentation.suse.com / Documentação do SUSE Linux Enterprise Desktop / Guia de Administração / Tarefas comuns / Cópia de arquivo com RSync
Aplica-se a SUSE Linux Enterprise Desktop 15 SP7

15 Cópia de arquivo com RSync

Hoje em dia, um usuário comum possui vários computadores: em casa e no local de trabalho, um laptop, um smartphone ou um tablet. Isso torna muito mais importante a tarefa de manter os arquivos e documentos sincronizados entre vários dispositivos.

Atenção
Atenção: Risco de perda de dados

Antes de começar a usar uma ferramenta de sincronização, você deve se familiarizar com os recursos e as funcionalidades. Faça backup de seus arquivos importantes.

15.1 Visão geral conceitual

Para sincronizar uma grande quantidade de dados em uma conexão de rede lenta, o Rsync oferece um método confiável para transmitir apenas as mudanças nos arquivos. Isso não se aplica apenas a arquivos de texto, mas também a arquivos binários. Para detectar as diferenças entre os arquivos, o Rsync os subdivide em blocos e calcula seus checksums.

A detecção de mudanças requer uma determinada capacidade de processamento. Portanto, verifique se as máquinas em ambas as extremidades têm recursos suficientes, incluindo memória RAM.

O Rsync pode ser útil principalmente quando grandes quantidades de dados que contêm apenas pequenas mudanças precisam ser transmitidas regularmente. Geralmente, esse é o caso quando se trabalha com backups. O Rsync também pode ser útil para espelhamento de servidores para testes que armazenam árvores completas de diretórios de servidores Web em um servidor Web na DMZ.

Apesar do nome, o Rsync não é uma ferramenta de sincronização. Rsync é uma ferramenta que copia dados apenas em uma direção de cada vez. Ele não faz e não pode fazer o contrário. Se você precisa de uma ferramenta bidirecional capaz de sincronizar a origem e o destino, use o Csync.

15.2 Sintaxe básica

O Rsync é uma ferramenta de linha de comando que tem a seguinte sintaxe básica:

rsync [OPTION] SOURCE [SOURCE]... DEST

Você pode usar o Rsync em qualquer máquina local ou remota, desde que tenha acesso e permissões de gravação. É possível ter várias entradas SOURCE. Os espaços reservados SOURCE e DEST podem ser caminhos, URLs ou ambos.

Veja a seguir as opções mais comuns do Rsync:

-v

Gera um texto mais verboso

-a

Modo de arquivamento: copia arquivos recursivamente e preserva marcações de horário, propriedade de usuário/grupo, permissões de arquivos e links simbólicos

-z

Comprime os dados transmitidos

Nota
Nota: Total de barras à direita

Ao trabalhar com o Rsync, você deve prestar atenção especial às barras à direita. Uma barra à direita após o diretório indica o conteúdo do diretório. Nenhuma barra à direita indica o próprio diretório.

15.3 Copiando arquivos e diretórios localmente

A seguinte descrição pressupõe que o usuário atual tem permissões de gravação para o diretório /var/backup. Para copiar um único arquivo de um diretório em sua máquina para outro caminho, use o seguinte comando:

> rsync -avz backup.tar.xz /var/backup/

O arquivo backup.tar.xz é copiado para /var/backup/. O caminho absoluto é /var/backup/backup.tar.xz.

Lembre-se de adicionar a barra à direita após o diretório /var/backup/. Se você não inserir a barra, o arquivo backup.tar.xz será copiado para /var/backup (arquivo), e não dentro do diretório /var/backup/!

Copiar um diretório é semelhante a copiar um arquivo único. O seguinte exemplo copia o diretório tux/ e seu conteúdo para o diretório /var/backup/:

> rsync -avz tux /var/backup/

Localize a cópia no caminho absoluto /var/backup/tux/.

15.4 Copiando arquivos e diretórios remotamente

A ferramenta Rsync é necessária em ambas as máquinas. Para copiar arquivos de ou para diretórios remotos, é necessário um endereço IP ou um nome de domínio. Um nome de usuário será opcional caso os nomes de usuários atuais na máquina local e remota sejam os mesmos.

Para copiar o arquivo file.tar.xz de seu host local para o host remoto 192.168.1.1 com os mesmos usuários (sendo local e remoto), use o seguinte comando:

> rsync -avz file.tar.xz  tux@192.168.1.1:

Dependendo do que você preferir, estes comandos também serão possíveis e equivalentes:

> rsync -avz file.tar.xz 192.168.1.1:~
> rsync -avz file.tar.xz 192.168.1.1:/home/tux

Em todos os casos com configuração padrão, será solicitado para você inserir a frase secreta do usuário remoto. Esse comando copia o file.tar.xz para o diretório pessoal do usuário tux (normalmente, /home/tux).

Copiar um diretório remotamente é semelhante a copiar um diretório localmente. O seguinte exemplo copia o diretório tux/ e seu conteúdo para o diretório remoto /var/backup/ no host 192.168.1.1:

> rsync -avz tux 192.168.1.1:/var/backup/

Supondo que você tenha permissões de gravação no host 192.168.1.1, poderá encontrar a cópia no caminho absoluto /var/backup/tux.

15.5 Configurando e usando um servidor Rsync

O Rsync pode ser executado como um daemon (rsyncd) que escuta na porta padrão 873 para conexões recebidas. Esse daemon pode receber destinos de cópia.

A descrição a seguir explica como criar um servidor Rsync em um host jupiter com um destino de backup. Esse destino pode ser usado para armazenar os backups. Para criar um servidor Rsync, faça o seguinte:

Procedimento 15.1: Configurando um servidor Rsync
  1. No jupiter, crie um diretório para armazenar todos os seus arquivos de backup. Neste exemplo, usamos /var/backup:

    # mkdir /var/backup
  2. Especifique a propriedade. Neste caso, o diretório pertence ao usuário tux no grupo users:

    # chown tux.users /var/backup
  3. Configure o daemon rsyncd.

    Separamos o arquivo de configuração em um arquivo principal e alguns módulos que contêm o destino de backup. Isso facilita adicionar outros destinos futuramente. É possível armazenas valores globais nos arquivos /etc/rsyncd.d/*.inc, enquanto os módulos são armazenados nos arquivos /etc/rsyncd.d/*.conf:

    1. Crie um diretório /etc/rsyncd.d/:

      # mkdir /etc/rsyncd.d/
    2. No arquivo de configuração principal /etc/rsyncd.conf, adicione as seguintes linhas:

      # rsyncd.conf main configuration file
      log file = /var/log/rsync.log
      pid file = /var/lock/rsync.lock
      
      &merge /etc/rsyncd.d 1
      &include /etc/rsyncd.d 2

      1

      Faz a fusão dos valores globais dos arquivos /etc/rsyncd.d/*.inc no arquivo de configuração principal.

      2

      Carrega os módulos (ou destinos) dos arquivos /etc/rsyncd.d/*.conf. Esses arquivos não devem conter nenhuma referência a valores globais.

    3. Crie o módulo (destino de backup) no arquivo /etc/rsyncd.d/backup.conf com as seguintes linhas:

      # backup.conf: backup module
      [backup] 1
         uid = tux 2
         gid = users 2
         path = /var/backup 3
         auth users = tux  4
         secrets file = /etc/rsyncd.secrets 5
         comment = Our backup target

      1

      O destino de backup. Você pode usar qualquer nome que desejar. No entanto, convém nomear um destino de acordo com sua finalidade e usar o mesmo nome em seu arquivo *.conf.

      2

      Especifica o nome de usuário ou nome do grupo que é usado quando a transferência de arquivos é feita.

      3

      Define o caminho para armazenar os backups (da Passo 1).

      4

      Especifica uma lista separada por vírgulas de usuários permitidos. Em sua forma mais simples, ela contém os nomes de usuário que têm permissão para conectar-se a este módulo. Em nosso caso, apenas o usuário tux é permitido.

      5

      Especifica o caminho de um arquivo que contém as linhas com os nomes de usuário e as senhas simples.

    4. Crie o arquivo /etc/rsyncd.secrets com o seguinte conteúdo e substitua PASSPHRASE:

      # user:passwd
      tux:PASSPHRASE
    5. Verifique se o arquivo pode ser lido apenas por root:

      # chmod 0600 /etc/rsyncd.secrets
  4. Inicie e habilite o daemon rsyncd com:

    # systemctl enable rsyncd
    # systemctl start rsyncd
  5. Teste o acesso ao servidor Rsync:

    > rsync jupiter::

    Você deve ver uma resposta parecida com esta:

    backup          Our backup target

    Do contrário, verifique o arquivo de configuração, as configurações de rede e de firewall.

As etapas acima criam um servidor Rsync que agora pode ser usado para armazenar backups. O exemplo também cria um arquivo de registro listando todas as conexões. Esse arquivo é armazenado em /var/log/rsyncd.log. Isso é útil para depurar suas transferências.

Para listar o conteúdo do destino de backup, use o seguinte comando:

> rsync -avz jupiter::backup

Esse comando lista todos os arquivos presentes no diretório /var/backup no servidor. Essa solicitação também é registrada no arquivo de registro /var/log/rsyncd.log. Para iniciar uma transferência real, especifique um diretório de origem. Use . para o diretório atual. Por exemplo, o comando a seguir copia o diretório atual para o servidor de backup Rsync:

> rsync -avz . jupiter::backup

Por padrão, o Rsync não apaga arquivos e diretórios quando ele é executado. Para habilitar a exclusão, a opção adicional --delete deve ser especificada. Para garantir que nenhum arquivo novo seja apagado, use a opção --update como alternativa. Qualquer conflito ocorrido deve ser resolvido manualmente.

15.6 Mais informações

Csync

Ferramenta de sincronização bidirecional de arquivos. Consulte https://csync.org/.

RSnapshot

Cria backups incrementais. Consulte https://rsnapshot.org.

Unison

Uma ferramenta de sincronização de arquivos semelhante ao CSync, mas com interface gráfica. Consulte https://github.com/bcpierce00/unison.

Rear

Uma estrutura de recuperação de desastres. Consulte o Administration Guide da SUSE Linux Enterprise High Availability, capítulo Disaster Recovery with Rear (Relax-and-Recover).

Documentation survey