Categories: Tecnologia

10 exemplos úteis do comando rsync do Linux

O comando Linux rsyncé uma poderosa ferramenta de cópia de arquivos e sincronização de pastas. Aqui estão dez casos de uso comuns que você poderá usar bem em seus próprios sistemas.

A ferramenta rsync

A rsyncferramenta copia arquivos e diretórios entre dois computadores. Ele usa um  algoritmo sofisticado  que verifica as árvores de diretórios para encontrar arquivos no computador de origem que não existem no computador de destino. Esses arquivos são transmitidos para o computador de destino. O que faz o

 rync 

tão inteligente é que ele consegue descobrir quais partes dos arquivos existentes foram modificadas e envia apenas as partes alteradas.

Você pode usar rsyncpara copiar arquivos para um local diferente no disco rígido, para um disco rígido diferente no mesmo computador, para uma unidade USB conectada externamente ou para qualquer outro local acessível pela rede.

Além disso, rsyncpode opcionalmente preservar links simbólicos, links físicos e metadados de arquivos , como propriedade de arquivos, permissões e tempos de acesso. Para suportar todas essas funcionalidades, rsynctem muitas opções e descobrir todas elas leva tempo. Reunimos esses 10 exemplos para ajudá-lo a começar. Já escrevemos sobre como fazer backups com rsync, então estamos nos concentrando em outros usos aqui.

Apesar de todas as suas muitas opções, a estrutura de um rsynccomando é simples. Precisamos fornecer a origem, o destino e as opções que queremos usar. Você provavelmente descobrirá que ele rsyncjá está instalado em seu computador Linux — estava em todas as nossas máquinas de teste — mas se não estiver, definitivamente estará nos repositórios de sua distribuição.

1. Copie os arquivos para um diretório diferente

Aqui está um exemplo simples para nos ajudar. Vamos copiar os arquivos do diretório “project-files” para o diretório “Documents”. Estamos usando duas opções, a -aopção (arquivar) e a -vopção (detalhado). A opção detalhada diz rsyncpara explicar o que está fazendo enquanto faz. O

 archive 

opção preserva a propriedade do arquivo e alguns outros itens que veremos em breve.

O formato do comando é

 options source-location destination-location 

.

rsync -av /home/dave/arquivos de projeto/ /home/dave/Documentos/

Usar lsa pasta “Documentos” mostra que os arquivos foram copiados.

Enquanto rsyncestá funcionando, os arquivos são listados à medida que são copiados. Disseram-nos:

  • O número de bytes que são enviados.
  • O número de bytes recebidos. Antes de a transferência do arquivo ocorrer, rsyncé necessário decidir quais arquivos precisam ser transferidos. Para fazer isso, algumas informações sobre os arquivos no destino devem ser recuperadas por rsync. Esta informação está contida nos bytes recebidos.
  • A velocidade da transferência.
  • O tamanho total dos arquivos copiados.
  • A “aceleração”. Esta é a proporção do tamanho total dividido pela soma dos bytes enviados e recebidos. Quanto maior esse número, mais eficiente será a transferência.

Modificamos o arquivo de texto no diretório de origem e repetimos o rsynccomando.

rsync -av /home/dave/arquivos de projeto/ /home/dave/Documentos/

Desta vez, o único arquivo que precisa ser atualizado é o arquivo de texto que modificamos. O número de aceleração agora é 30.850. É muito mais eficiente copiar a parte modificada desse único arquivo do que copiar todos os arquivos.

A -aopção (archive) na verdade representa uma coleção de outras opções. É o mesmo que usar todas estas opções:

  • r : Trabalhe recursivamente através de árvores de diretórios no diretório de origem e copie-as para o diretório de destino, criando-as se ainda não existirem lá.
  • l : Copia links simbólicos como links simbólicos.
  • p : preserva as permissões do arquivo.
  • t : Preserva os tempos de modificação do arquivo.
  • g : Preserva as permissões do grupo.
  • o : Preserva a propriedade do arquivo.
  • D : Copie arquivos especiais e arquivos de dispositivos. Arquivos especiais podem ser itens centrados na comunicação que são tratados como arquivos, como soquetes e canais primeiro a entrar, primeiro a sair (fifos). Arquivos de dispositivos são arquivos especiais que fornecem acesso a dispositivos e pseudodispositivos.

Esta é uma combinação usada com frequência que rsyncfornece a -aopção (arquivar) como uma forma abreviada de invocar todos eles.

2. Copie um diretório para um diretório diferente

Se você observar o rsynccomando anterior, verá uma barra “/” no caminho do arquivo do diretório de origem. Isto é significativo. Diz rsyncpara copiar o conteúdo do diretório. Se você não fornecer a barra final, rsynccopiará o diretório e seu conteúdo.

rsync -av /home/dave/arquivos de projeto /home/dave/Documentos/

Desta vez, o nome do diretório é adicionado ao nome do arquivo conforme eles são listados. Se olharmos dentro do diretório de destino, veremos que a pasta de origem foi copiada com os arquivos dentro dela.

ls Documentos/

ls Documentos/arquivos de projeto/

3. Copie um diretório para uma unidade diferente

Copiar arquivos para outro local no mesmo disco rígido não oferece proteção contra falha na unidade . Se essa unidade desistir do fantasma, você perderá as cópias de origem e destino desses arquivos. Copiá-los para outro disco rígido é uma forma muito mais robusta de proteger seus dados. Tudo o que precisamos fazer é fornecer o caminho correto para a unidade de destino.

rsync -av /home/dave/arquivos de projeto /run/mount/drive2

Olhar para o outro disco rígido nos mostra o diretório e os arquivos que foram copiados para ele.

ls run/mount/drive2/project-files/

4. Fazendo primeiro uma simulação

Antes de vermos como rsyncpodemos excluir arquivos de maneira útil, vamos ver como podemos rsyncfazer um teste.

Em uma simulação, rsyncrealiza os movimentos de execução das ações que solicitamos, mas na verdade não as executa. Ele relata o que teria acontecido se o comando tivesse sido executado. Dessa forma, podemos ter certeza de que o comando faz exatamente o que esperamos.

Para forçar um teste, usamos a --dry-runopção.

rsync -av --dry-run /home/dave/geocoder /run/mount/drive2

Os arquivos que teriam sido copiados são listados para nós, e obtemos as estatísticas usuais, seguidas da mensagem (DRY RUN)para que saibamos que nada realmente aconteceu.

5. Excluindo arquivos no diretório de destino

A --deleteopção diz rsyncpara excluir arquivos e diretórios no diretório de destino que não estão no diretório de origem. Isso significa que o diretório de destino será uma cópia exata do diretório de origem. Seremos prudentes e usaremos a --dry-runopção primeiro.

rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2

Fomos informados de que dois arquivos serão excluídos. Se tivermos certeza de que não nos importamos que eles sejam excluídos, podemos remover a --dry-runopção e executar o comando de verdade.

rsync -av --delete /home/dave/geocoder /run/mount/drive2

Desta vez, o conteúdo dos diretórios é sincronizado e os dois arquivos extras são excluídos.

6. Excluindo os arquivos de origem

Você pode optar por excluir os arquivos de origem após uma transferência bem-sucedida, tornando rsynca operação mais parecida com uma movimentação do que com uma cópia. Se a transferência não for bem-sucedida, os arquivos de origem não serão excluídos. A opção que precisamos usar é --remove-source-files.

rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2

Observe que os arquivos podem ser excluídos mesmo que nenhum arquivo seja transferido. Isso porque se rsyncverificar, e todos os arquivos já estiverem no diretório de destino e não houver nada a rsyncfazer, rsyncconsidera que a transferência foi bem-sucedida.

Além disso, rsyncexclui apenas os arquivos do diretório de origem. Ele não exclui o diretório de origem nem nenhum subdiretório, apenas os arquivos neles contidos. Podemos ver isso usando a -Ropção (recursiva) com ls, no diretório de origem.

ls -R geocodificador

7. Copie arquivos para um computador remoto

Para sincronizar pastas com um computador remoto, rsyncdeve estar instalado em ambos os computadores. Configure a comunicação SSH entre os dois computadores antes de tentar usar rsynco computador remoto.

Você precisa fazer login remotamente como um usuário normal no computador remoto para rsyncfuncionar. Não importa se você usa um ID e senha para fazer login ou se configurou chaves SSH para acesso seguro sem senha , mas se você não conseguir fazer login como usuário, também rsyncnão funcionará .

Se você fizer login com uma senha, rsyncserá solicitada a senha. Se você usar chaves SSH para fazer login, o processo será contínuo.

A única coisa extra que você precisa fazer é adicionar o nome da conta do usuário e o endereço IP do computador remoto ao início do caminho do arquivo de destino. Use uma arroba ” @” para separar o nome de usuário do nome do computador ou endereço IP e dois pontos ” :” para separar o nome do computador ou endereço IP do caminho do diretório.

Na nossa rede de teste, esses dois comandos são equivalentes.

rsync -av /home/dave/geocoder dave@nostromo.local:/home/dave/Downloads

rsync -av /home/dave/geocoder dave@192.168.86.60:/home/dave/Downloads

Recebemos as mesmas informações que recebemos quando copiamos arquivos localmente.

8. Incluir ou excluir arquivos ou diretórios

Você pode ter arquivos e diretórios no diretório de origem que não deseja copiar para o computador de destino. Você pode excluí-los usando a --excludeopção. De forma semelhante, você pode optar por incluir arquivos e diretórios específicos com a --includeopção.

A peculiaridade é que, se você usar a --includeopção por conta própria, todos os arquivos serão copiados normalmente – incluindo os arquivos especificamente incluídos. Para copiar apenas os arquivos incluídos, você precisa fazer --exclude todo o resto.

Você pode usar quantas --includeopções --excludequiser em seu comando, mas certifique-se de colocar suas --includeopções antes de suas --excludeopções. Além disso, certifique-se de ter uma barra no caminho do arquivo de origem.

Este comando copia apenas arquivos de código-fonte C e arquivos de dados CSV para o computador de destino.

 rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder 

Os únicos arquivos copiados são aqueles que incluímos especificamente.

9. Compactar arquivos na transferência

A -zopção (comprimir) faz com rsyncque os arquivos transferidos sejam compactados. Porém, eles não são armazenados como arquivos compactados no computador de destino; eles são compactados apenas durante a transferência em si. Isso pode acelerar transferências demoradas.

rsync -avz /home/dave/geocoder /run/mount/drive2

10. Monitorando o Progresso

Falando em transferências demoradas, podemos adicionar algumas estatísticas para que possamos ver o andamento da transferência.

A -Popção (parcial, progresso) na verdade adiciona duas opções --partiale --progress. A --partialopção informa rsyncpara manter os arquivos parcialmente transferidos se a transferência falhar. Isso economiza tempo quando a transferência é reiniciada.

A --progressopção imprime, para cada arquivo, os dados transferidos em bytes e em porcentagem, a velocidade da transferência, o tempo gasto, o número do arquivo que está sendo transferido e a contagem dos arquivos restantes.

rsync -aP /home/dave/geocoder /run/mount/drive2

A saída passa muito rapidamente e é difícil de ler. Você pode melhorar um pouco as coisas removendo a -vopção (detalhado) do comando. Mesmo assim, ainda é difícil de ler enquanto passa zunindo.

Muitas vezes é mais útil monitorizar o progresso da transferência global. Você pode fazer isso com a opção –info e passando “progress2” como parâmetro.

sincronizar -a --info=progress2 /home/dave/geocoder /run/mount/drive2

Isto fornece um relatório de progresso que é realmente útil.

Como cp em esteróides

O rsynccomando é rápido, flexível e vale a pena o tempo necessário para se familiarizar com ele. A forma básica de um rsynccomando com as -avopções, diretório de origem e diretório de destino não é nada difícil de lembrar.

Para muitos casos de uso, isso é tudo que você precisa. Fique confortável com isso e o resto virá facilmente.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago