Copiando arquivos e diretórios com o rsync
- 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.txteexample2.txtpara o diretório de destino.
As OPTIONS (opções) mais comuns estão listadas abaixo:
-Vmostra o texto da saída em mais detalhes.
-amodo 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
-zcompacta os dados transmitidos
-nou--dry-runfaz uma execução de teste sem nenhuma modificação
-rexecuta recursivamente nos diretórios
--progressmostra o progresso durante a transferência
-bfaz backup durante a sincronização de dados
-hmostra os números na saída em um formato legível para humanos
-epara transferências remotas, instrui o rsync a usar o protocolo SSH
-q or --quietsilencia o comando rsync e a saída da opção
--versionimprime 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.txtpara 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/
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.
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:
Na máquina local, crie um diretório
/var/backuppara armazenar todos os arquivos de backup.>mkdir /var/backupEspecifique a propriedade:
Neste exemplo, o usuário
tuxno grupousersé proprietário do diretório:>chown tux.users /var/backupConfigure o daemon
rsyncd:Crie um diretório
/etc/rsyncd.d/>mkdir /etc/rsyncd.d/Crie o arquivo de configuração principal
/etc/rsyncd.confe adicione as seguintes linhas:log file = /var/log/rsync.log1 pid file = /var/lock/rsync.lock2 merge /etc/rsyncd.d3 include /etc/rsyncd.d4
/var/log/rsync.logé o local onde o rsync grava os registros./var/lock/rsync.locké o arquivo que contém o ID do processo da instância do daemon rsync em execução.Faz a fusão dos valores globais dos arquivos
/etc/rsyncd.d/*.incno arquivo de configuração principal.Carrega os módulos (ou destinos) dos arquivos
/etc/rsyncd.d/*.conf. Esses arquivos não devem conter nenhuma referência a valores globais.
Crie o módulo ou o destino de backup no arquivo
/etc/rsyncd.d/backup.confcom 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:
[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.uid = tuxespecifica o nome de usuário ou do grupo que é usado quando a transferência de arquivos é feita.gid = usersdefine o caminho para armazenar os backups (da Etapa 1).path = /var/backupdefine o caminho para armazenar os backups (da Etapa 1).auth users = tuxespecifica 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.secrets file = /etc/rsyncd.secretsespecifica o caminho de um arquivo que contém as linhas com os nomes de usuário e as senhas simples.Crie o arquivo
/etc/rsyncd.secretscom o seguinte conteúdo e substituaPASSPHRASE:# user:passwd tux:PASSPHRASE
Verifique se o arquivo pode ser lido apenas por root:
chmod 0600 /etc/rsyncd.secrets
Inicie e habilite o daemon
rsyncdcom:>systemctl enable rsyncd>systemctl start rsyncdNa 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
rsyncque 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.Para listar o conteúdo do destino do backup, use o seguinte comando em sua máquina local:
>rsync -avz jupiter::backupEsse comando lista todos os arquivos presentes no diretório
/var/backupno servidor. Essa solicitação também é registrada no arquivo de registro/var/log/rsyncd.log.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::backupPor padrão, o
rsyncnão apaga arquivos e diretórios quando é executado. Para habilitar a exclusão, a opção adicional--deletedeve ser especificada. Para garantir que nenhum arquivo novo seja apagado, use a opção--updatecomo 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.
8 Informações legais #
Copyright© 2006 – 2025 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para saber as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.