10 exemplos práticos do comando rsync no Linux

10 exemplos práticos do comando rsync no Linux

Rsync (Sincronização remota) é o comando mais comumente usado para copiar e sincronizar arquivos e diretórios remotamente, bem como localmente em Linux/Unix sistemas.

Com a ajuda do rsync Comando, você pode copiar e sincronizar seus dados remotamente e localmente entre diretórios, discos e redes, executar backups de dados e espelhar entre duas máquinas Linux.

Rsync Local e Remote File Syncronization

Este artigo explica 10 Uso básico e avançado do rsync comando para transferir seus arquivos remotamente e localmente em Baseado em Linux máquinas. Você não precisa ser um raiz usuário para executar o rsync comando.

Algumas vantagens e recursos do comando rsync

  • Ele copia e sincroniza com eficiência arquivos de ou para um sistema remoto.
  • Suporta copiar links, dispositivos, proprietários, grupos e permissões.
  • É mais rápido que o SCP (Cópia segura) porque rsync usa um protocolo de atualização remota que permite transferir apenas as diferenças entre dois conjuntos de arquivos. Na primeira vez, copia todo o conteúdo de um arquivo ou diretório de origem para destino, mas da próxima vez, copia apenas os blocos e bytes alterados para o destino.
  • O RSYNC consome menos utilização de largura de banda, pois usa o método de compressão e descompressão ao enviar e receber dados nas duas extremidades.
A sintaxe básica do comando rsync
# RSYNC Options Source Destination
Algumas opções comuns usadas com comandos rsync
  • -v : verbose
  • -r : Copia os dados de forma recursiva (mas não preserve o registro de data e hora e a permissão ao transferir dados.
  • -a : Modo de arquivo, que permite copiar arquivos recursivamente e também preserva links simbólicos, permissões de arquivos, proprietários de usuários e grupos e registros de data e hora.
  • -z : compressa dados de arquivo.
  • -h : números de saída legíveis por humanos em um formato legível pelo homem.

[Você também pode gostar: como sincronizar arquivos/diretórios usando o rsync com porta ssh não padrão]

Instale o RSYNC no sistema Linux

Podemos instalar o rsync Pacote com a ajuda do seguinte comando em sua distribuição Linux.

$ sudo apt-get install rsync [no debian/ubuntu & mint] $ Pacman -s rsync [no arch linux] $ emerge sys-apps/rsync [no gentoo] $ sudo yum install rsync [em fedora/centes/rhel e rocky Linux/Almalinux] $ sudo zypper install rsync [no openSuse] 

1. Copiar/sincronizar arquivos e diretório localmente

Copiar/sincronizar um arquivo em um computador local

O comando a seguir sincronizará um único arquivo em uma máquina local de um local para outro local. Aqui neste exemplo, um nome de arquivo cópia de segurança.alcatrão precisa ser copiado ou sincronizado para /tmp/backups/ pasta.

[[Email Protected]]# rsync -zvh backup.alcatrão.GZ/tmp/backups/diretório criado/tmp/backups backup.alcatrão.GZ enviou 224.54k bytes receberam 70 bytes 449.21k Bytes/s Tamanho total é 224.Speedup de 40k é 1.00 

No exemplo acima, você pode ver que, se o destino ainda não existir, o RSYNC criará um diretório automaticamente para o destino.

Arquivos locais do RSYNC
Copiar/sincronizar um diretório no computador local

O comando a seguir transferirá ou sincroniza todos os arquivos de um diretório para um diretório diferente na mesma máquina. Aqui neste exemplo, /root/rpmpkgs Contém alguns arquivos de pacote de RPM e você deseja que esse diretório seja copiado dentro /tmp/backups/ pasta.

[[email protegido]]# rsync -avzh/root/rpmpkgs/tmp/backups/envio de arquivos incremental lista rpmpkgs/rpmpkgs/httpd -2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/MOD_SSL-2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.rpm rpmpkgs/nagios-4.4.6-4.EL8.x86_64.RPM RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.EL8.x86_64.RPM enviou 3.47m bytes receberam 96 bytes 2.32m bytes/s Tamanho total é 3.74m Speedup é 1.08 
Diretório local do RSYNC

2. Copiar/sincronizar arquivos e diretório para ou de um servidor

Copie um diretório do servidor local para um servidor remoto

Este comando sincronizará um diretório de uma máquina local para uma máquina remota. Por exemplo, Há uma pasta no seu computador local “rpmpkgs”Que contém alguns RPM pacotes e você deseja que o conteúdo do diretório local envie para um servidor remoto, você pode usar o seguinte comando.

[[Email Protected]: ~]# rsync -avzh/root/rpmpkgs [email protegido]:/root/a autenticidade do host '192.168.0.141 (192.168.0.141) 'não pode ser estabelecido. ED25519 A impressão digital de chave é SHA256: BH2TIWQN4S5O6QMZHMTXCBROV5TU5H4T2C42QDEMX1C. Esta chave não é conhecida por nenhum outro nome, você tem certeza de que deseja continuar se conectando (sim/não/[impressão digital])? Sim Aviso: Adicionado permanentemente '192.168.0.141 '(ED25519) para a lista de hosts conhecidos. [Email Protected] Senha: enviando lista de arquivos incremental RPMPKGS/ RPMPKGS/ HTTPD-2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/MOD_SSL-2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.rpm rpmpkgs/nagios-4.4.6-4.EL8.x86_64.RPM RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.EL8.x86_64.RPM enviou 3.74m bytes receberam 96 bytes 439.88k bytes/s Tamanho total é 3.74m Speedup é 1.00 
RSYNC Directory Remote System
Copiar/sincronizar um diretório remoto para uma máquina local

Este comando o ajudará a sincronizar um diretório remoto a um diretório local. Aqui neste exemplo, um diretório /root/rpmpkgs que está em um servidor remoto está sendo copiado em seu computador local em /tmp/myrpms.

[[Email protegido]: ~]# rsync -avzh [email protegido]:/root/rpmpkgs/tmp/myrpms [email protegido] senha: recebendo lista de arquivos incremental criada diretório/tmp/myrpms rpmpkgs/rpmpkgs/httpd -2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/MOD_SSL-2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.rpm rpmpkgs/nagios-4.4.6-4.EL8.x86_64.RPM RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.EL8.x86_64.RPM enviou 104 bytes recebidos 3.49m bytes 997.68k bytes/s Tamanho total é 3.74m Speedup é 1.07 
Diretório Remoto RSYNC para Local

3. Rsync sobre ssh

Com rsync, podemos usar Ssh (Capsula segura) para transferência de dados, usando Ssh Protocolo ao transferir nossos dados, você pode garantir que seus dados estejam sendo transferidos em uma conexão segura com a criptografia para que ninguém possa ler seus dados enquanto estiver sendo transferido sobre o fio na Internet.

[Você também pode gostar: como proteger e endurecer o servidor OpenSsh]

Também quando usamos rsync Precisamos fornecer o do utilizador/raiz senha para realizar essa tarefa específica, portanto, usando o Ssh a opção enviará seus logins de maneira criptografada para que seu senha estará seguro.

Copie um arquivo de um servidor remoto para um servidor local com SSH

Para especificar um protocolo com rsync você precisa dar o “-e”Opção com o nome do protocolo que você deseja usar. Aqui neste exemplo, usaremos o “ssh" com o "-e”Opção e execução de transferência de dados.

[[Email Protected]: ~]# rsync -avzhe ssh [email protegido]:/root/anaconda -ks.CFG /TMP [Protegido por email] Senha: recebendo lista de arquivos incremental Anaconda-Ks.CFG enviou 43 bytes recebidos 1.10k bytes 325.43 bytes/s Tamanho total é 1.A aceleração 90K é 1.67 
Rsync cópia arquivo remoto para local
Copie um arquivo de um servidor local para um servidor remoto com SSH
[[Email Protected]: ~]# rsync -avzhe backup ssh.alcatrão.gz [email protegido]:/backups/[email Protected] senha: enviando lista de arquivos incremental Criada diretório/backups backup.alcatrão.GZ enviou 224.59k bytes receberam 66 bytes 64.19K Bytes/s Tamanho total é 224.Speedup de 40k é 1.00 
RSYNC cópia do arquivo local para remoto

[Você também pode gostar: como usar o RSYNC para sincronizar arquivos novos ou alterados/modificados no Linux]

4. Mostre o progresso ao transferir dados com o RSYNC

Para mostrar o progresso ao transferir os dados de uma máquina para uma máquina diferente, podemos usar o '-progresso' opção. Ele exibe os arquivos e o tempo restante para concluir a transferência.

[[email protegido]:/]# rsync -avzhe ssh --progress/root/rpmpkgs [email protegido]:/root/rpmpkgs [email protegido] senha: envio de arquivos incrementais rpmpkgs/rpmpkgs/httpd -2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.RPM 1.47m 100% 31.80MB/S 0:00:00 (XFR#1, TO-CHK = 3/5) RPMPKGS/MOD_SSL-2.4.37-40.Module_el8.5.0+852+0AAFC63B.x86_64.RPM 138.01k 100% 2.69MB/S 0:00:00 (XFR#2, TO-CHK = 2/5) RPMPKGS/NAGIOS-4.4.6-4.EL8.x86_64.RPM 2.01m 100% 18.45MB/S 0:00:00 (XFR#3, TO-CHK = 1/5) RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.EL8.x86_64.RPM 120.48k 100% 1.04MB/S 0:00:00 (XFR#4, TO-CHK = 0/5) enviado 3.74m bytes receberam 96 bytes 1.Bytes de 50m/size total é 3.74m Speedup é 1.00 
Rsync Progress enquanto copia arquivos

5. Uso de opções -include e -exclus

Essas duas opções nos permitem incluir e excluir Arquivos especificando parâmetros com essas opções nos ajudam a especificar os arquivos ou diretórios que você deseja incluir em sua sincronização e excluir arquivos e pastas com você não querem ser transferidos.

Aqui neste exemplo, o comando rsync incluirá apenas os arquivos e diretórios que começam com 'R'e exclua todos os outros arquivos e diretórios.

[[email protegido]:/]# rsync -avze ssh --include 'r*' --exclude '*' [email protegido]:/var/lib/rpm//root/rpm [email protegido] senha: Recebendo a lista de arquivos incremental criada diretório /root /rpm ./ Nome do requisito Enviado 61 bytes recebidos 273.074 bytes 60.696.67 bytes/s Tamanho total é 761.856 A aceleração é 2.79 
Rsync inclui e exclua arquivos

6. Uso da opção -Delete

Se um arquivo ou diretório não existir na fonte, mas já existir no destino, convém excluir esse arquivo/diretório existente no alvo enquanto sincroniza.

Podemos usar o '-excluir'Opção para excluir arquivos que não estão lá no diretório de origem.

Fonte e destino estão em sincronia. Agora crie um novo arquivo teste.TXT no alvo.

[[Email Protected]: ~]# CD/Root/RPM/[[Email Protected]: ~/rpm]# teste de toque.txt [[email protegido]: ~/rpm]# rsync -avz - -delete [email protegido]:/var/lib/rpm//root/rpm/[email protegido] senha: recebendo teste de lista de arquivos incremental.TXT ./ .dbenv.trancar .RPM.bloquear nomes de basenas conflitos nome dirnames aprimorou o nome do filme FileTriggerName Installtid name obsoletename Pacotes Providename sha1header sigmd5 sugestName suplementname transfiletriggername tathername __db.001 __db.002 __DB.003 enviou 445 bytes recebidos 18.543.954 bytes 2.472.586.53 bytes/s Tamanho total é 71.151.616 A aceleração é 3.84 

Target tem o novo arquivo chamado teste.TXT, Ao sincronizar com a fonte com o '-excluir'Opção, ele removeu o arquivo teste.TXT.

Opção de exclusão do rsync

7. Defina o tamanho máximo dos arquivos a serem transferidos

Você pode especificar o Máx Tamanho do arquivo a ser transferido ou sincronizado. Você pode fazer isso com o “-tamanho máximo”Opção. Aqui neste exemplo, o tamanho do arquivo max é 200k, Portanto, este comando transferirá apenas os arquivos iguais ou menores que 200k.

[[Email Protected]: ~]# rsync -avzhe ssh -max -size = '200k'/var/lib/rpm/[email protegido]:/root/tmprpm [email protegido] senha: enviando lista de arquivos incrementais diretório criado /root /tmprpm ./ .dbenv.trancar .RPM.Lock ConflictName Enhancename Nome FileTriggerName Grupo InstallTid Name obsoletename RecomendName Requisito SHA1HEADER SIGMD5 SUGGERTNAME SUPLESEMEMENTE NAME DOME.002 enviado 129.52k bytes receberam 396 bytes 28.87k bytes/s Tamanho total é 71.A aceleração de 15m é 547.66 
RSYNC SET MAX FILE TIM

8. Exclua automaticamente os arquivos de origem após a transferência bem -sucedida

Agora, suponha que você tenha o principal servidor da web e um servidor de backup de dados, você criou um backup diário e o sincroniza com seu servidor de backup, agora você não deseja manter essa cópia local do backup em seu servidor da web.

Então, você esperará que a transferência seja concluída e depois exclua esse arquivo de backup local manualmente? Claro que não. Esta exclusão automática pode ser feita usando o '-Remover arquivos de fonte'Opção.

[[Email Protected]: ~]# RSYNC--REMOVE-SOURCE-FILES -ZVH Backup.alcatrão.gz [email protegido]:/tmp/backups/[email protegido] senha: backup.alcatrão.GZ enviou 795 bytes recebidos 2.33k bytes 894.29 Bytes/s Tamanho total é 267.A aceleração 30k é 85.40 [[Email Protected]: ~]# LS -l Backup.alcatrão.gz LS: Não é possível acessar 'Backup.alcatrão.gz ': nenhum arquivo ou diretório 
Rsync Excluir arquivo de origem após transferência

9. Faça uma corrida a seco com rsync

Se você é um novato usando o rsync e não sabe o que exatamente seu comando vai fazer. O RSYNC poderia realmente estragar as coisas na sua pasta de destino e depois fazer um desfazer pode ser um trabalho tedioso.

[Você também pode gostar: como sincronizar dois servidores/sites da Web Apache usando RSYNC]

O uso desta opção não fará nenhuma alteração nos arquivos e mostra a saída do comando, se a saída mostrar exatamente o mesmo que você deseja fazer, você poderá remover o '-funcionamento a seco'opção do seu comando e execute no terminal.

[[Email Protected]: ~]# rsync --funcionamento a seco --Remova o backup de arquivos de fonte -ZVH.alcatrão.gz [email protegido]:/tmp/backups/[email protegido] senha: backup.alcatrão.GZ enviou 50 bytes recebidos 19 bytes 19.71 Bytes/s Tamanho total é 267.A aceleração 30k é 3.873.97 (FUNCIONAMENTO A SECO) 
Rsync Run Dry Run

10. Rsync define limite de largura de banda e arquivo de transferência

Você pode definir o limite de largura de banda ao transferir dados de uma máquina para outra com a ajuda de '-bwlimit'Opção. Esta opção nos ajuda a limitar E/S largura de banda.

[[Email Protected]]# rsync - -bwlimit = 100 -avzhe ssh/var/lib/rpm/[email protegido]:/root/tmprpm/[email protegido] senha: envio lista de arquivos incremental enviada 324 bytes recebidos 12 bytes 61.09 Bytes/s Tamanho total é 38.08M A aceleração é 113347.05

Além disso, por padrão, o RSYNC sincroniza apenas blocos e bytes, se você deseja explicitamente sincronizar o arquivo inteiro, use o '-C'opção com isso.

[[Email protegido]]# rsync -zvhw backup.alcatrão/tmp/backups/backup.Backup de alcatrão.alcatrão enviado 14.71m bytes receberam 31 bytes 3.27m Bytes/s Tamanho total é 16.A aceleração de 18m é 1.10

Isso é tudo com o rsync agora, você pode ver Páginas de homem Para mais opções. Fique conectado com Tecmint Para tutoriais mais emocionantes e interessantes no futuro. Deixe o seu comentários e sugestões.