Como configurar o daemon rsync no Linux

Como configurar o daemon rsync no Linux

Em um artigo anterior, vimos alguns exemplos básicos de como usar rsync no Linux para transferir dados com eficiência. Como vimos, para sincronizar dados com uma máquina remota, podemos usar um shell remoto como ssh ou o daemon rsync. Neste artigo, vamos nos concentrar na última opção, e veremos como instalar e configurar rsyncd Em algumas das distribuições Linux mais usadas.

Neste tutorial, você aprenderá:

  • Como instalar e configurar o daemon rsync

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição
Programas
  • Rsync
  • Rsyncd (o daemon rsync)
Outro Não são necessários requisitos especiais para seguir este tutorial
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Instalação

Instalando o daemon rsync é realmente fácil, já que o pacote e suas dependências estão disponíveis por padrão em todos os principais repositórios de distribuições Linux. Sobre Debian e Archlinux, Os arquivos relacionados ao daemon rsync estão incluídos o rsync pacote, então tudo o que precisamos fazer é instalar o último. No Debian, podemos usar o gerente de pacotes APT:

$ sudo apt-get install rsync

No Archlinux, em vez disso, usamos Pacman:

$ sudo pacman -s rsync

Em distribuições como o fedora, em vez disso, rsyncd, O daemon rsync, é distribuído em seu próprio pacote, rsync-daemon. Nas versões recentes da distribuição, para instalá -la, podemos usar o DNF gerenciador de pacotes. O principal pacote RSYNC será instalado como uma dependência:



$ sudo dnf install rsync-daemon 

O arquivo de configuração do RSYNCD

Uma vez rsyncd está instalado, podemos configurá -lo usando o /etc/rsyncd.conf arquivo. O arquivo já está incluído nos pacotes Archlinux e Fedora, enquanto no Debian deve ser criado do zero. Aqui está o conteúdo do arquivo no Fedora:

# /etc /rsyncd: arquivo de configuração para o modo daemon rsync # consulte o rsyncd.Conf Man Page para mais opções. # Configuração Exemplo: # uid = ninguém # gid = ninguém # use chroot = sim # max conexões = 4 # pid arquivo =/var/run/rsyncd.pid # exclude = perdido+encontrado/ # transferência logging = sim # timeout = 900 # ignore não legível = sim # não compressa = *.gz *.TGZ *.fecho eclair *.z *.Z *.rpm *.Deb *.bz2 # [ftp] # caminho = /home /ftp # comentário = área de exportação de ftp 

Todos os parâmetros são comentados e exibidos como um exemplo de configuração: eles representam um bom ponto de partida para nossa discussão. A primeira coisa que devemos notar é como um rsyncd módulo é definido:

[FTP] PATH = /HOME /FTP Comentário = Área de Exportação FTP

Um módulo é definido em uma "estrofe" que começa com a declaração do nome do módulo entre colchetes, neste caso [FTP]. Um módulo está associado a um diretório no sistema de arquivos, especificado com o caminho argumento. Todos os parâmetros fornecidos dentro da estrofe são local, Portanto, eles são aplicados apenas ao módulo relacionado; Configurações fornecidas antes de qualquer estrofe, são global. Vamos dar uma rápida olhada em alguns deles.



Parâmetros globais

Como acabamos de dizer, os parâmetros globais são os definidos no início do /etc/rsyncd.conf arquivo, antes de qualquer definição de módulo, ou opcionalmente dentro de um [global] seção. Aqui vamos discutir alguns dos mais interessantes.

O parâmetro "PID FILE"

Este parâmetro é usado para especificar o caminho de um arquivo em que o rsyncd PID (ID do processo) será escrito. Por padrão, o lançamento do Daemon será abortado se o arquivo especificado já existir. É possível mudar esse comportamento e deixar o arquivo ser substituído, em vez disso, lançando o daemon rsync com o --dParam = pid -filfile = arquivo opção.

O parâmetro "Port"

Ao usar este parâmetro global, podemos especificar uma porta alternativa para o daemon rsync. O padrão é TCP Porta 873. Esta opção pode ser substituída quando o daemon é lançado, usando o --porta opção.

O parâmetro "endereço"

Podemos usar o global endereço parâmetro para especificar o endereço que o daemon rsync ouvirá. O endereço especificado no arquivo pode ser substituído lançando o daemon com o --endereço opção, fornecendo o endereço desejado como argumento.

Além dos parâmetros que vimos acima, na seção global, podemos especificar também Parâmetros do módulo. Quando o fizermos, os valores dos parâmetros especificados se tornarão os padrão para todos os módulos.

Parâmetros do módulo

Os parâmetros do módulo são os especificados dentro de uma seção de módulo e são aplicados a essa seção apenas. Vamos ver alguns deles.

O parâmetro "caminho"

Este parâmetro é obrigatório e deve ser fornecido para cada módulo. É usado para especificar o caminho do diretório disponibilizado pelo próprio módulo.

O parâmetro "Comentário"

O parâmetro "Comentário" é opcional: podemos especificar uma string que será exibida perto do nome do módulo, quando o cliente solicitar uma lista dos disponíveis.

Faça um módulo leia ou escreva apenas

Por padrão, todos os módulos são criados como somente leitura. Isso significa que um cliente só pode usá -lo como fonte para a transferência. Esse comportamento pode ser alterado definindo o parâmetro "somente leitura" para não ou falso. O módulo também pode ser feito apenas com gravação, usando o Escreva apenas parâmetro e fornecimento sim ou verdadeiro como valor. Se este último parâmetro estiver ativado, o cliente não poderá baixar arquivos do módulo. Para ler arquivos do módulo ou gravar, as permissões do Unix padrão também devem ser respeitadas; portanto, o usuário a transferência é executada como, deve ter permissão para executar a ação desejada.

Os parâmetros UID e GID

O uid e Gid Parâmetros combinados, defina os privilégios que a transferência terá. O primeiro é usado para definir o usuário, a transferência é executada como quando o daemon é executado como root (se o daemon for executado com os privilégios de um usuário normal, o usuário não mudará). O usuário pode ser identificado por seu nome de usuário ou seu ID numérico. O último define um ou mais nome de grupo ou ID do grupo a ser usado para a transferência.

O valor padrão para ambas as opções é ninguém, o que significa que quando o daemon é executado como raiz, as transferências serão executadas com os privilégios do ninguém usuário e o ninguém Grupo (no Debian, o grupo ninguém não existe - não é usado em vez disso).

O parâmetro "Use Chroot"

Usando o Use chroot Parâmetro, podemos definir se o RSYNC deve fazer o CHROOT para o caminho do módulo definido antes que a transferência seja iniciada. Isso pode ser usado para aplicar a segurança, mas, para tirar proveito dela, o daemon deve ser configurado para executar com privilégios de raiz. Por padrão, esta opção está definida como sim.

O parâmetro "Max Connections"

Este é outro parâmetro muito útil e é usado para definir o número máximo de conexões simultâneas suportadas pelo daemon. O valor padrão usado para o parâmetro é 0, o que significa que nenhum limite está definido. Se o valor fornecido for um número negativo, as conexões serão completamente desativadas.

Exclua e inclua arquivos da transferência

Às vezes, podemos querer excluir alguns arquivos da transferência: podemos realizar a tarefa usando o excluir parâmetro, que aceita uma lista de padrões separados por espaço. Os arquivos correspondidos pelos padrões não serão sincronizados. O incluir O parâmetro funciona da mesma maneira, mas é usado para definir explicitamente inclusões.



Outra maneira de excluir ou explicitamente incluir arquivos é usando o excluir de e incluir de parâmetros. Com esses parâmetros, podemos especificar o caminho dos arquivos que contêm padrões de exclusão e inclusão, respectivamente. Os arquivos devem conter um padrão por linha.

O excluir, incluir, excluir de e incluir de Os parâmetros podem aparecer apenas uma vez dentro de um módulo.

O parâmetro "timeout"

Quando usamos o rsync cliente, podemos fornecer o--tempo esgotado Opção para definir um tempo limite de E/S máxima em segundos: Se nenhum dados for transferido no tempo especificado, a transferência será abortada. O tempo esgotado opção do daemon rsync pode ser usado para substituir o tempo limite definido pelo cliente. Isso pode ser útil para evitar esperar por um cliente morto indeterminadamente. O tempo limite é expresso em segundos: 0 é o padrão, e significa que não há tempo limite.

O “ignorar não legível” e “não compactam”

O ignore não legível a opção é usada, instrua o rsync a ignorar arquivos que não são legíveis pelo usuário, a transferência está em execução como. O Não compacte A opção, em vez disso, é usada para fornecer uma lista separada por espaço de padrões insensíveis a casos usados ​​para selecionar arquivos que não devem ser comprimidos durante a transferência. Isso pode ser especialmente útil para evitar a compactação de arquivos já compactados.

Os parâmetros “Hosts permitem” e “hosts negam”

Usando o Os hosts permitem e Os anfitriões negam Parâmetros, podemos especificar uma lista de padrões separados por vírgula que serão comparados com os clientes HostName ou IP, para permitir ou negar acesso a eles, respectivamente. Os dois parâmetros podem ser combinados e aparecem juntos dentro de um módulo: os padrões de "permitir" são verificados antes dos "negar". Por padrão, todos os hosts podem se conectar.

Exemplo de uma configuração de módulo

Vamos fazer um exemplo e criar um módulo em um servidor RSYNC. A primeira coisa que devemos fazer é permitir o tráfego de entrada TCP porta 873. Se estamos usando o firewalld, podemos adicionar o pré-configurado rsyncd Serviço para a zona que estamos usando:

$ sudo firewall-cmd --permanent-add-service rsyncd && sudo firewall-cmd--reload

Se estivermos usando o UFW, em vez disso, podemos executar:

$ sudo ufw permitir 873/tcp

Depois de configurarmos o firewall, podemos prosseguir e definir um módulo. Aqui está a nossa configuração:

[LinuxConfig] PATH =/MNT/DATA/RSYNC COMENTÁRIO = "Exemplo de um módulo de daemon rsync" somente leitura = false exclude = *.TXT

Chamamos nosso módulo de "LinuxConfig" e associamos o /mnt/dados/rsync diretório para ele. Nós também fornecemos um comentário. Definimos o módulo legível e gravável, definindo o somente leitura parâmetro para false e, através do excluir parâmetro, fornecemos um padrão para excluir todos os arquivos com o .TXT extensão.

Antes de usarmos nosso módulo, precisamos iniciar o daemon. Podemos executar o RSYNC como um daemon invocando o programa com o --Daemon Opção, ou podemos simplesmente usar o Systemd para realizar a tarefa (sob o capô, o serviço Systemd executa o mesmo comando). Sob distribuições baseadas em Debian, o serviço é chamado rsync; em Fedora e Archlinux, é chamado rsyncd:

$ sudo systemctl start rsync

Para fazer o RSYNC iniciar automaticamente no Boot, devemos usar o SystemCTL habilitar Subcomando:

$ sudo systemctl Ativar rsync

Nós definimos o /mnt/dados/rsync diretório como de propriedade do ninguém usuário e o não Grupo (é uma máquina Debian). Aqui está o seu conteúdo:

$ ls/mnt/dados/rsync csv1.CSV Text1.txt text2.TXT 

Como podemos ver, o diretório contém dois .TXT arquivos e um .CSV. Se usarmos o módulo como fonte na transferência, apenas o “CSV1.O arquivo CSV ”será incluído:

$ rsync -av rsync: // 192.168.0.39/LinuxConfig/ . recebendo lista de arquivos incremental ./ csv1.CSV 

A exclusão também entra em vigor quando usamos o módulo como destino. Vamos, digamos, criamos o “csv2.CSV "e" Text3.arquivos txt ”em nosso diretório de trabalho atual:

$ toque csv2.CSV Text3.TXT


Se agora executarmos o RSYNC e usarmos nosso diretório de trabalho atual como fonte e o módulo como destino, podemos ver como o daemon se recusa a receber o “text3.arquivo txt ”, pois é correspondido pelo padrão de exclusão especificado:

$ rsync -av . rsync: // 192.168.0.39/LinuxConfig Enviando o erro da lista de arquivos incremental: Daemon se recusou a receber o arquivo "Text3.TXT" ./ csv2.CSV 

Observe que nos comandos acima usamos um Rsync URL Para especificar o endereço IP do servidor e o nome do módulo que queremos usar. Como podemos obter uma lista de todos os módulos disponíveis em uma máquina? É muito fácil, apenas executamos o comando rsync, especificando apenas o endereço do servidor no URL:

$ rsync rsync: // 192.168.0.39 LinuxConfig "Exemplo de um módulo de daemon rsync" 

Todos os módulos disponíveis e os comentários associados serão exibidos; Nesse caso, apenas o "LinuxConfig".

Conclusão

Neste artigo, vimos como instalar e configurar o daemon rsync, em algumas das distribuições Linux mais usadas. Vimos e aprendemos a usar alguns dos parâmetros globais e específicos do módulo disponíveis para alterar o comportamento do daemon rsyncd. Finalmente vimos um exemplo de configuração de módulo. Para um conhecimento mais aprofundado de rsyncd, Sempre podemos consultar o manual oficial. É apenas uma questão de correr:

$ MAN RSYNCD.conf

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Coisas para instalar no Ubuntu 22.04
  • Arquivos de configuração do Linux: os 30 primeiros mais importantes
  • Mastering Bash Script Loops
  • Download do Linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Como fazer bota dupla kali linux e windows 10
  • Ubuntu 20.04 truques e coisas que você pode não saber