documentation.suse.com / Copiando arquivos e diretórios com o rsync
SUSE Linux Enterprise Server 16.0

Copiando arquivos e diretórios com o rsync

Data de Publicação: 04/11/2025
O QUE É?

Você pode usar a ferramenta rsync para copiar arquivos local ou remotamente. O rsync é unidirecional, ou seja, copia os arquivos apenas em uma direção.

POR QUÊ?

Este artigo apresenta uma visão geral da ferramenta rsync e seu uso básico para copiar arquivos local e remotamente.

DEDICAÇÃO

Leva até 20 minutos para compreender o uso básico da ferramenta rsync.

META

Obter uma compreensão básica do rsync e de como usá-lo para transferências de arquivos.

REQUISITOS

Permissões de acesso aos locais de origem e de destino para copiar os arquivos.

1 Conceito do rsync

Você pode usar a ferramenta rsync para transferir ou copiar arquivos local e remotamente. O rsync é unidirecional. Ele copia os arquivos em uma única direção e não sincroniza os dados. Em vez de transmitir todo o conteúdo do arquivo, o rsync minimiza a quantidade de dados copiados movendo apenas as modificações feitas no arquivo. Dessa forma, é possível transferir os dados por uma conexão de rede lenta.

Para copiar arquivos grandes usando o rsync, a detecção de mudanças requer uma determinada capacidade de processamento. Portanto, verifique se as máquinas tanto na origem quanto no destino têm recursos suficientes, incluindo RAM.

Use o rsync quando uma grande quantidade de dados com poucas mudanças precisa ser transmitida regularmente. Isso é útil para trabalhar com backups. O rsync também espelha servidores para testes que armazenam árvores completas de diretórios de servidores Web em um servidor Web na DMZ.

Este artigo inclui exemplos que mostram o uso do rsync para copiar arquivos local e remotamente. Este documento também explica como configurar e usar um servidor rsync.

2 Uso básico do rsync

Você pode usar o rsync em qualquer máquina em que tenha permissões de acesso e gravação.

Copie os arquivos do local de origem para o local de destino, conforme mostrado no seguinte exemplo:

> rsync [OPTION] SOURCE [SOURCE]... DESTINATION

Você pode ter várias entradas SOURCE, e os espaços reservados SOURCE e DESTINATION podem ser caminhos, URLs ou ambos.

Veja abaixo alguns casos de uso da cópia de arquivos:

  • > rsync -av /directory1/ /destination/

    No exemplo acima, a barra à direita após o diretório indica o conteúdo, e não o diretório em si. Neste caso, apenas o conteúdo de /directory1 é copiado para /destination.

  • > rsync -av /directory1 /destination/

    No exemplo acima, o diretório /directory1 é copiado para /destination, o que resulta em /destination/directory1/.

  • > rsync -av example1.txt example2.txt /destination/directory/

    O exemplo acima mostra a ação de copiar os arquivos example1.txt e example2.txt para o diretório de destino.

As OPTIONS (opções) mais comuns estão listadas abaixo:

  • -V

    mostra o texto da saída em mais detalhes.

  • -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

    compacta os dados transmitidos

  • -n ou --dry-run

    faz uma execução de teste sem nenhuma modificação

  • -r

    executa recursivamente nos diretórios

  • --progress

    mostra o progresso durante a transferência

  • -b

    faz backup durante a sincronização de dados

  • -h

    mostra os números na saída em um formato legível para humanos

  • -e

    para transferências remotas, instrui o rsync a usar o protocolo SSH

  • -q or --quiet

    silencia o comando rsync e a saída da opção

  • --version

    imprime o número da versão do rsync e encerra

Copiar arquivos localmente com compactação
> rsync -avz example1.txt example2.txt /destination/

-a: modo de arquivamento

-v: detalhado

-z: compactar os dados durante a transferência

Copiar um diretório com compactação
> rsync -avz /sourcedirectory/ /destinationdirectory/

Transfere o conteúdo de /sourcedirectory/ com compactação.

Transferência remota de arquivos com compactação
> rsync -avz example1.txt user@remote_host:/remote/destination/

Transfere o example1.txt para uma máquina remota por SSH enquanto compacta os dados.

Transferência remota de diretórios com compactação
> rsync -avz /sourcedirectory/ user@remote_host:/remote/destination/

Transfere o /sourcedirectory/ para uma máquina remota por SSH enquanto compacta os dados.

3 Copiando arquivos e diretórios com o rsync localmente

Você poderá copiar arquivos dentro da mesma máquina usando o rsync se tiver permissão de gravação no local de destino.

Para copiar o arquivo backup.tar.xz para o local /var/backup/, use o comando rsync -avz backup.tar.xz /var/backup/.

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

4 Copiando arquivos e diretórios com o rsync remotamente

Você pode usar o rsync para copiar arquivos de uma máquina para outra máquina remota. Verifique se você tem o rsync nas máquinas tanto de origem quanto de destino e está conectado à máquina remota por SSH.

Para copiar um único arquivo de um diretório em sua máquina para o diretório /var/backup em uma máquina remota, use o seguinte comando:

> rsync -avz example1.txt user@remote_host:/var/backup/
Nota
Nota: Barra à direita

Certifique-se de adicionar a barra à direita após o diretório /var/backup/. Se você não inserir a barra, o arquivo example1.txt será copiado para /var/backup, e não dentro do diretório /var/backup/.

Verifique o arquivo copiado no caminho absoluto /var/backup/example1.txt.

Para copiar o diretório source/ e seu conteúdo para o diretório /var/backup/:

> rsync -avz /source/ user@remote_host:/var/backup/

Verifique o diretório copiado no caminho absoluto /var/backup/source/.

5 Configurando e usando um servidor Rsync

Um servidor rsync permite sincronização de arquivos, backups automatizados e armazenamento centralizado. É possível executar o rsync como um daemon rsyncd que escuta na porta padrão 873 para conexões recebidas. Esse daemon pode receber copying targets.

Procedimento 1: Configurando um servidor Rsync

O arquivo de configuração para o daemon rsync é separado 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 em /etc/rsyncd.d/*.conf.

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

  1. Na máquina local, crie um diretório /var/backup para armazenar todos os arquivos de backup.

    > mkdir /var/backup
  2. Especifique a propriedade:

    Neste exemplo, o usuário tux no grupo users é proprietário do diretório:

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

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

      > mkdir /etc/rsyncd.d/
    2. Crie o arquivo de configuração principal /etc/rsyncd.conf e adicione as seguintes linhas:

      log file = /var/log/rsync.log1
      pid file = /var/lock/rsync.lock2
      merge /etc/rsyncd.d3
      include /etc/rsyncd.d4

      1

      /var/log/rsync.log é o local onde o rsync grava os registros.

      2

      /var/lock/rsync.lock é o arquivo que contém o ID do processo da instância do daemon rsync em execução.

      3

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

      4

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

  4. Crie o módulo ou o 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 3
         path = /var/backup 4
         auth users = tux 5
         secrets file = /etc/rsyncd.secrets 6
         comment = Our backup target 7

    No exemplo apresentado:

    1

    [backup] é o destino do backup. Você pode usar qualquer nome para o destino do backup. É possível usar um nome de acordo com sua finalidade e usar o mesmo nome no arquivo *.conf.

    2

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

    3

    gid = users define o caminho para armazenar os backups (da Etapa 1).

    4

    path = /var/backup define o caminho para armazenar os backups (da Etapa 1).

    5

    auth users = tux 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.

    6

    secrets file = /etc/rsyncd.secrets especifica o caminho de um arquivo que contém as linhas com os nomes de usuário e as senhas simples.

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

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

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

    > systemctl enable rsyncd
    > systemctl start rsyncd
  8. Na máquina remota, teste o acesso ao servidor rsync:

    > rsync jupiter::

    É exibida uma resposta semelhante a esta:

    backup Our backup target

    Se a resposta acima não aparecer, verifique o arquivo de configuração, o firewall e as configurações de rede.

    As etapas acima criam um servidor rsync que você pode usar 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 as transferências.

  9. Para listar o conteúdo do destino do backup, use o seguinte comando em sua máquina local:

    > 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.

  10. Para copiar o diretório atual para o seu servidor de backup rsync, insira o diretório de origem. Se o diretório de origem for o seu diretório atual, use .

    > rsync -avz . jupiter::backup

    Por padrão, o rsync não apaga arquivos e diretórios quando é 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.

6 Apagando e atualizando arquivos e diretórios com o rsync

Você poderá copiar e sincronizar arquivos dentro da mesma máquina usando o rsync se tiver permissão de gravação no local de destino. Você também poderá apagar arquivos ou diretórios após a cópia.

Para copiar os arquivos example1.txt e example2.txt de /source/directory/ para /destination/directory/:

> rsync -av --update /source/directory/ /destination/directory/

O comando rsync atualizará os arquivos example1.txt e example2.txt no /destination/directory/, se ele for mais antigo que o arquivo de origem. Se a versão no destino for mais recente, os arquivos não serão substituídos. Além disso, todos os outros arquivos ou diretórios novos de /source/directory/ serão copiados para /destination/.

Para copiar um arquivo existente e apagar um arquivo que não existe no diretório de destino:

> rsync -av --delete /source/directory/ /destination/directory/

Nesse cenário, os diretórios de origem e de destino contêm example1.txt e example2.txt. O /destination/directory contém um arquivo extra: example3.txt.

O comando rsync copia ou atualiza os arquivos example1.txt e example2.txt de /source/directory/ para /destination/directory/. O comando também apaga o arquivo example3.txt de /destination/directory/, já que ele não existe em /source/directory/. Além disso, a estrutura de diretórios em /destination/directory/ é limpa para corresponder ao /source/directory/.

7 Solucionando problemas do rsync

A cópia de arquivos ou pastas pode falhar por vários motivos. Verifique se você tem as permissões e os recursos necessários para executar a cópia do arquivo.

Os métodos de solução de problemas possíveis estão mencionados abaixo:

  • Verifique se você selecionou a versão mais recente do rsync. Para transferir arquivos ou diretórios remotamente, verifique se o rsync está instalado nas máquinas de origem e de destino.

  • Garanta que você tenha a permissão de acesso ao rsync necessária.

  • Insira o nome de host correto para copiar os arquivos remotamente.

  • Certifique-se de que o serviço rsync esteja em execução, se você usa o rsync no modo de daemon.