Rsync Port no Linux: como alterar a porta do Rsync

O Linux Rsync Port, é o utilitário mais popularmente utilizado para cópia e sincronização de arquivos e diretórios de forma remota ou local em sistemas Linux usando portas personalizadas com o SSH. Neste artigo vamos explicar como customizar a porta Rsync no Linux.

Com o auxílio da ferramenta Rsync, você é capaz de copiar e sincronizar todos os dados de forma remota e local em diretórios, discos e redes distintas, assim como obter backups de qualquer conteúdo e espelhá-lo entre duas máquinas Linux.

Como instalar o Rsync no Linux

Você pode fazer a instalação da ferramenta Rsync no Linux de forma bem fácil através do seu pacote padrão de distribuição. Vamos utilizar o Ubuntu 22.04 LTS neste artigo, porém, o mesmo processo de instalação serve para distribuições Debian e Mint.

Para tanto, utilize o seguinte comando:

$ sudo apt install rsync

A saída poderá ser semelhante a essa:

Por que usar o Rsync Port com porta personalizada

Agora com a ferramenta já instalada, começaremos a ver como sincronizar arquivos usando o Rsync Port com porta SSH não padrão.

Mas logo de início você deve estar se perguntando, o por que usar porta no SSH que não seja a padrão?

A resposta é simplesmente, por questões de segurança. Pois é de conhecimento de todos que administram sistemas Linux que a porta 22 é a padrão para o serviço de SSH.

Sendo assim, acaba sendo imprescindível que você altere a porta SSH para outra totalmente diferente, que acabe sendo difícil de se adivinhar.

Mas, se você alterar a porta padrão do SSH, como conseguirá sincronizar seus dados entre servidor local e servidor remoto? Não há com o que se preocupar, não é algo difícil de se fazer. Para facilitar, veremos neste artigo como fazer a sincronização de arquivos com o Rsync Port no Linux.

O Rsync, também chamado de Remote Sync, é um utilitário conhecido por ser rápido e poderoso.

Podemos usá-lo tanto para copiar e sincronizar arquivos e diretórios de máquina local para máquina local ou de máquina local para máquinas remotas. Ademais, há outras informações sobre a ferramenta que você pode conferir na man page, um arquivo extenso explicando todos os recursos:

$ man rsync

Parâmetros usados com Rsync Port no Linux

Ao longo desse artigo você irá perceber que usaremos diversas vezes as mesmas opções junto ao comando Rsync.

Então, nada melhor do que conhecer algumas dessas opções antes:

-e: É responsável por definir um shell remoto a ser usado. No caso deste artigo, vamos usá-lo como definição para o SSH.

-avz: São conhecidas também como opções sinalizadoras. Traduzindo, são respectivamente, arquivar, detalhar e compactar.

-a: Opção arquivar – Basicamente, essa opção facilita a cópia recursiva de diretórios.

-v: Opção detalhar – Mais conhecida como verbose, nos permite visualizar o tempo o que acontece durante a execução do Rsync.

-z: compactar: Essa opção é responsável por compactar os dados, portanto, importante por tornar a transferência e sincronização muito mais rápida.

Como alterar o Rsync Port no Linux

Agora que já sabemos que o Rsync Port utiliza o protocolo SSH e a porta padrão 22, você pode alterar a porta em questão em seu host para mudar o nível de segurança do comando.

Dessa forma, basta abrir e editar o arquivo de configuração do SSH, que provavelmente estará no caminho /etc/ssh/sshd_config

$ sudo vim /etc/ssh/sshd_config

Localize a linha referente à configuração de porta, descomente e mude o número da porta, inserindo um número a partir de 1000. Mas, defina um valor que não seja muito comum ou óbvio para se descobrir.

Você também deve se certificar de que o novo número de porta não está em uso por algum outro serviço já em funcionamento na máquina.

Para tanto, você pode utilizar o comando netstat para listar os serviços ativos e suas portas.

Sendo assim, eu usei a porta 2339.

Após isto, salve e feche o arquivo.

Reinicie o serviço com o comando:

$ sudo systemctl restart sshd

Observação: Caso você esteja usando alguma distribuição Linux baseada em RPM como RHEL ou CentOS, configure o firewall para que permita acesso pela porta escolhida.

Então, vamos ver como sincronizar arquivos através do Rsync Port no Linux com porta personalizada.

Como sincronizar arquivos com Rsync Port no Linux

Execute o seguinte comando no terminal para sincronizar arquivos/diretórios usando Rsync Port com porta SSH personalizada.

Sintaxe padrão do comando:

$ sudo rsync -avz -e "ssh -p <numero_da_porta>" <usuario>@<ip_do_servidor>:/caminho/desejado/ /local/caminho/desejado

Para o exercício prático inicial neste artigo, farei uso destes dois ambientes:

Ambiente remoto:

Endereço IP: 192.168.153.129

Nome de usuário: suport

Pasta de sincronização: /home/suport/suporte

Ambiente local:

Sistema Operacional: Ubuntu 22.04 LTS

Endereço IP: 192.168.153.137

Diretório de sincronização: /home/homehost/bkp/

Então, agora será o momento de sincronizar o conteúdo do diretório /home/suport/suporte do servidor remoto para o diretório do servidor local /home/homehost/bkp/

$ homehost@homehost:~$ sudo rsync -avz -e "ssh -p 2339" suport@192.168.153.129:/home/suport /home/homehost/bkp/

Saída do comando:

Vamos conferir os dados do diretório /home/suport/suporte no servidor remoto.

$ sudo ls -l /home/suport/suporte

Saída esperada:

Agora, vamos conferir os dados do diretório /home/homehost/bkp/ do servidor local.

$ sudo ls -l /home/homehost/bkp/

Saída esperada:

Você pode conferir no resultado da saída acima que o conteúdo do servidor remoto foi copiado com êxito para o servidor local em /home/homehost/bkp/

Então, vamos conferir o conteúdo do diretório /suporte:

$ sudo ls -l /home/homehost/bkp/suporte

Conferimos a saída esperada:

Podemos ver que os diretórios e arquivos são os mesmos em ambos os servidores.

Mais exemplos do comando Rsync no Linux

Com o comando a seguir, você poderá sincronizar um ou mais arquivos em uma mesma máquina local.

Em nosso exemplo, vamos sincronizar o arquivo wordpress.zip para o diretório  /home/install

$ sudo rsync -zvh wordpress.zip /home/install

Saída do comando:

Caso o diretório de destino informado não existisse, o rsync o criaria automaticamente.

Como sincronizar diretório em máquina local

Iremos utilizar o comando a seguir para transferir os arquivos de um diretório para outro diretório no mesmo computador. Caso arquivos e subdiretórios já existam no destino e sejam identificadas atualizações, será feita também a sincronização.

Os arquivos e diretórios de origem estão em /home/Download e serão enviados para o destino /home/install

$ sudo rsync -avzh  /home/Download /home/install/

A saída será semelhante a essa:

Podemos perceber que houve uma ação de incrementação, pois o arquivo já existia no diretório destino.

Sincronizar arquivos para um computador remoto

O próximo comando servirá para sincronizar os arquivos de um diretório através de uma máquina local para uma remota.

Vamos considerar que você tenha em seu computador o mesmo caminho utilizado anteriormente /home/Download, e agora você quer que o conteúdo desse diretório seja transferido para seu servidor remoto, você rodará o comando semelhante abaixo para isso.

$ sudo rsync -avz /home/Download  homehost@192.168.153.137:/tmp/

A saída deverá ser parecida com essa:

Sincronizar diretório remoto para computador local

Este comando irá ajudá-lo a sincronizar um diretório remoto para um diretório local.

O diretório /home/arquivos está localizado no servidor remoto e será copiado para a máquina local, no caminho /home/baixados

Este processo é o inverso dos exemplos remotos que fizemos até então, bem parecido com um download.

$ sudo rsync -avzh homehost@192.168.153.137:/home/arquivos /home/baixados
Vejamos a saída:

Acompanhar o progresso de transferência com o rsync

Quando você tiver um grande volume de dados para transferir entre diferentes máquinas e além disso quiser ter a visualização do progresso, poderá fazer uso da opção –progress.

$ sudo rsync -avzhe ssh --progress /home/Download/ homehost@192.168.153.137:/home/homehost/transferencia

A saída deverá ser parecida com a seguinte:

Incluir ou excluir com –include e –exclude

Utilizamos essas opções quando queremos incluir ou excluir arquivos e diretórios de forma condicional durante o processo de cópia ou sincronismo.

No próximo teste, iremos incluir todos os arquivos e diretórios que iniciam com a letra ‘U’ assim como excluir todo o restante que comece com qualquer outra letra ou caractere.

Vale lembrar que este comando não exclui os dados da origem, apenas do processamento de cópia e sincronia.

$ sudo rsync -avze ssh --include 'u*' --exclude '*' homehost@192.168.153.137:/var/log/ /home/log

Assim, conferimos a saída:

No comando acima, os diretórios e arquivos foram buscados no servidor remoto 192.168.153.137, caminho /var/log/ e salvos em /home/log

Limitar o tamanho de arquivos transferidos

A opção ‘–max-size’ permite a você definir o tamanho máximo dos arquivos que poderão ser transferidos.

Então, vamos ao exemplo: No comando você pode definir o valor de 10k, isso fará com que haja transferência apenas de arquivos que terão tamanho de até 10k.

$ sudo rsync -avzhe ssh --max-size='10k' /var/log/ homehost@192.168.153.137:/home/homehost/bkp/suporte

Neste comando, pegamos todos os arquivos com até 10k do diretório/var/log/ da máquina local e copiamos para o servidor remoto 192.168.153.137 com o destino /home/homehost/bkp/suporte

Deletar arquivos da origem após a transferência

Quando você possui um cenário de backup diário entre duas máquinas (origem e destino) e não deseja acumular cópias obsoletas de dados na máquina de origem, você pode fazer uso da opção –remove-source-files, que fará a tarefa de remover os arquivos e diretórios da origem sempre que a sincronização do backup for concluída com sucesso.

Sendo assim, você não precisará aguardar a conclusão da transferência para então deletar os dados de backup manualmente.

Dessa forma, parece até mesmo uma forma sofisticada do comando “mv”, pois permite ser executado remotamente e de forma programática.

$ sudo rsync --remove-source-files -zvh text.php /assets/

Saída do comando:

Limitar a largura de banda com o Rsync

Podemos impor um limite na largura de banda enquanto a transferência e sincronismo de arquivos ocorre entre mais de uma máquina. Você pode utilizar a opção ‘— bwlimit’ para isso.

$ sudo rsync --bwlimit=10 -avzhe ssh  /var/log/ homehost@192.168.153.137:/tmp/log2/

Saída do comando:

Usando a opção –dry-run com o Rsync

Quando estamos aprendendo a utilizar o Rsync, ficamos propensos a cometer alguns erros, principalmente quando não sabemos exatamente o que alguns parâmetros fazem exatamente.

É aí que devemos tomar cuidado, pois não haverá como reverter ações em determinados cenários.

Para que você minimize esse tipo de problema e evite surpresas existe a opção –dry-run.

Fazendo uso desse parâmetro junto com o Rsync + a opção desejada, não haverá alterações.

Será exibido o resultado do processo como sendo o comando normalmente, ficando assim mais fácil de localizar erros e saber do resultado do comando sem de fato cometer um erro.

$ sudo rsync --dry-run --remove-source-files -zvh index.html /home/homehost/bkp/suporte

Saída do comando:

Vantagens de usar o comando Rsync

Usar este utilitário para sincronizar dados há diversas vantagens, entre elas:

1 – Eficiência na transferência de arquivos

O rsync faz uso de algoritmo no processo de transferência, isso faz com que ele transfira apenas arquivos novos ou alterados, entre a máquina de origem e destino, fazendo com que tenha redução significativa no volume de dados transferidos, principalmente em caso de arquivos grandes.

2 – Versatilidade no sincronismo de arquivos remotamente

A ferramenta rsync permite que nós façamos a transferência de dados tanto de forma local quanto remota utilizando o Rsync Port SSH, bem como possibilita a sincronização através de máquinas locais e remotas ou diretórios compartilhados entre diversas máquinas.

3 – Backups incrementais

Nós podemos utilizar o rsync como ferramenta geradora de backup, pois é um utilitário capaz de criar e atualizar cópias com eficiência.

4 – Mantém as propriedades de arquivos e diretórios

O rsync é capaz de manter as propriedades de arquivos e diretórios da forma em que estavam na origem para o destino.

Sejam as propriedades permissões, data e hora da criação, links simbólicos etc.

5 – Controle no uso da largura de banda

Com o rsync nós temos um limite no uso da largura de banda enquanto a transferência de dados ocorre, pois a ferramenta possui uma forma de compactação e descompactação no envio e recebimento, respectivamente.

6 – Mais veloz que outros utilitários

Em comparação à ferramenta scp, o Rsync possui mais velocidade na transferência e sincronismo dos dados, principalmente quando se trata de grandes arquivos transferidos ou atualizados de uma origem para o destino.

Considerações finais

Enfim, sem dúvidas, a segurança com Rsync Port customizada transforma o processo de sincronização de dados muito mais seguro e confiável.

O comando Rsync é muito completo e nos possibilita usá-lo com mais de uma opção e condição em sua sintaxe de comando.

A princípio aparenta ser complexo, principalmente se você não está muito familiarizado com processos de configurações e comandos em Linux, mas sincronizar todos os seus dados entre máquinas não é algo difícil. Então, agora é com você, pratique estes e outros exemplos que as outras opções do Rsync possui.

Este artigo foi útil?

Obrigado pela resposta!
Marcio S

Marcio S

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!