Pastas de sincronização com RSYNC

Nesta publicação que cobre o básico de rsync, em preparação para uma publicação futura que cobrirá os backups e o uso de rsync em conjunto com os cronjobs para automatizar o processo de backup. A partir da cópia e sincronização de arquivos e pastas locais, ao seu uso para transferir informações entre computadores. Seu uso como um serviço quando o SSH não está disponível foi movido para sua própria seção.

Os princípios básicos do RSYNC
COPING arquivos e pastas locais de lidar com espaços em branco e Outros personagens raros
Atualize o conteúdo de uma pasta
Sincronizando duas pastas com RSYNC
Comprimindo os arquivos antes de transferi-los e transferir arquivos entre dois sistemas remotos, excluindo arquivos e diretórios usando o RSYNC Como um serviço (movido para sua própria seção)
alguns parâmetros rsync adicionais
notas de rodapé

os princípios básicos do RSYNC

rsync é uma ferramenta de cópia muito versátil que está incluída em quase todas as versões do Linux. Ele pode ser usado como uma ferramenta de cópia avançada, permitindo-nos copiar arquivos localmente ou remotamente. Além disso, ele pode ser usado como uma ferramenta para backup, suporta a criação de backups incrementais.

rsync tem um famoso algoritmo famoso de transferência delta que nos permite Para transferir arquivos novos, bem como as alterações recentes nos arquivos existentes, enquanto ignoram os arquivos que não foram modificados. Além disso, o comportamento de rsync pode ser personalizado, ajudando-nos a automatizar os backups, ele também pode ser usado como um serviço para converter o computador em um servidor e permitir que outros clientes rsync Conecte-se a ele.

Além da cópia de arquivos e pastas locais, rsync nos permite copiar Usando como médio ssh (shell seguro), RSH (shell remoto) e pode ser executado como um serviço em um computador e permitir que outros computadores se conectem, quando rsync é usado como um serviço ouça porta 873.

Quando usamos rsync como um serviço ou quando usamos RSH, os dados enviados entre computadores não viajam criptografados, portanto, se você estiver transferindo arquivos entre dois computadores na mesma rede local, isso é útil, mas isso não deve ser usado para transferir arquivos em redes inseguras, como é Internet. Para este propósito, ssh é o melhor para usar.

Esta é a principal razão pela qual eu favorecer o uso de ssh para minhas transferências, além disso, graças a isso é seguro, muitos servidores têm o serviço SSH disponível . Mas o uso de rsync como um serviço para transferências em conexões rápidas, como geralmente é o caso em redes locais, é útil. Eu não tenho o serviço RSH em execução em meus computadores para que você possa descobrir que eu favorecer o ssh nos exemplos. Exemplos usam ssh como meio de transporte para transferências entre computadores remotos, mas em uma publicação separada eu cubro o uso de rsync como um serviço.

copiando arquivos e pastas locais

para copiar O conteúdo de uma pasta em outro, substituindo os arquivos na pasta de destino, podemos usar:

rsync -rtv carpeta_origen/ carpeta_destino/

Note que no Folder_Origen Adicionei uma diagonal no final, fazendo isso impede que uma nova pasta seja criada, se não adicionarmos a diagonal, uma pasta chamada de pasta chamada_origen será criada na pasta_destine. Portanto, se você quiser copiar o conteúdo de uma pasta chamada imagens dentro de uma pasta chamada imagens que já existem, você precisa adicionar a diagonal no final, caso contrário, uma pasta chamada imagens será criada dentro da pasta chamada imagens que especificamos como destino.

rsync -rtv origen/ destino/
representação gráfica do resultado após o uso do RSYNC com uma diagonal no final da fonte pasta.

rsync -rtv origen destino/
representação gráfica do resultado após o uso do rsync sem uma diagonal no final da pasta de origem .

O parâmetro significa que você fará a cópia recursiva das pastas, ou seja, criará toda a estrutura das pastas dentro pasta the_origen, e copiará todos os arquivos que são encontrados dentro desses.

O parâmetro -t Faz rsync Preserve os tempos de modificação dos arquivos que copiam a partir da pasta de origem.

O parâmetro -v significa que as informações impressas durante a execução do programa serão muito mais detalhadas, podemos usar isso para ver o progresso do comando.

Estes são os parâmetros que eu uso com freqüência, já que estou suportando arquivos pessoais e estes não contêm coisas como links simbólicos, mas outro parâmetro muito útil que pode ser usado com rsync é o parâmetro -a.

rsync -av origen/ destino/

o parâmetro -a Também faz cópia recursiva e preserva os tempos de modificação, mas também copia os links simbólicos que você encontra como links simbólicos, preservam as permissões, preservam as informações do proprietário e o grupo de arquivos e preservam os arquivos especiais e os arquivos especiais. Isso é útil se você estiver copiando o diretório pessoal de um usuário ou se estiver copiando pastas do sistema para outro lugar.

Lidduring com espaços em branco e outros caracteres raros

podemos escapar do espaço e personagens raros, bem como no bash, usando \ antes de qualquer espaço em branco e caractere raro. Além disso, podemos usar citações simples para incluir a seqüência de texto:

rsync -rtv or\{ig\ en/ des\ ti\{no/
rsync -rtv 'or{ig en/' 'des ti{no/'

Atualize o conteúdo de uma pasta

Para salvar a largura de banda e a hora, podemos evitar copiar arquivos que já temos na pasta de destino que você não foi modificado na pasta de origem. Para fazer isso, adicionamos o parâmetro -U para rsync, isso atualizará o conteúdo da pasta de destino com base na pasta de origem, é aí que o algoritmo de transferência delta entra. Para atualizar o conteúdo de uma pasta com base no conteúdo de outro uso:

rsync -rtvu carpeta_origen/ carpeta_destino/

Por padrão, rsync Assuma a data da última modificação do arquivo e do tamanho disso para decidir quais arquivos precisam ser transferidos e que os arquivos podem ser ignorados, mas podemos usar em vez deste método para decidir se o O arquivo é diferente ou não.

Para fazer isso, precisamos usar o parâmetro -c, que executará uma soma de verificação nos arquivos a serem transferidos. Isto irá ignorar qualquer arquivo em que correspondências de sombra.

rsync -rvuc carpeta_origen/ carpeta_destino/

sincronizando duas pastas com rsync

para manter dois Pastas de sincronia, não só precisamos adicionar os novos arquivos na pasta de origem à pasta de destino, também precisamos remover os arquivos que foram excluídos da pasta de origem na pasta de destino. rsync nos permite fazer isso com o parâmetro –delete, usado em conjunto com o parâmetro -U anterior que atualiza os arquivos modificados nos permite manter duas pastas na largura de banda de synchronia.

rsync -rtvu --delete carpeta_origen/ carpeta_destino/

O processo de exclusão pode ser feito antes, durante e após a transferência, podemos controlar a que horas acontece usando qualquer um dos Os seguintes parâmetros:

  • rsync Você pode procurar por arquivos ausentes e excluí-los antes do processo de transferência, este é o comportamento padrão e pode ser ajustado com --delete-before
  • rsync Você pode procurar por arquivos ausentes e apagá-los após a conclusão da transferência, com o parâmetro --delete-after
  • rsync pode excluir os arquivos durante a transferência, quando um arquivo ausente é encontrado, é excluído Naquela época, ativamos esse comportamento com --delete-during
  • rsync pode tornar a transferência e encontrar arquivos ausentes durante este processo, aguarde até que termine e excluído os arquivos que você encontrou mais tarde, isso pode ser alcançado com --delete-delay

por exemplo:

rsync -rtvu --delete-delay carpeta_origen/ carpeta_destino/

compactando os arquivos antes de transferi-los

para salvar algumas largura de banda, e geralmente economiza algum tempo também, podemos Comprimir as informações que estão sendo transferidas, podemos adicionar o parâmetro -z para rsync para conseguir isso.

rsync -rvz carpeta_origen/ carpeta_destino/

Se estivermos transferindo um grande número de arquivos sobre uma conexão rápida, rsync pode ser mais lento com o parâmetro -z sem ele, uma vez que levará mais tempo para comprimir cada arquivo como Tempo que seria retirado simplesmente para transferir os arquivos para a pasta the_destino. Use este parâmetro se você tiver uma conexão com velocidade limitada entre dois computadores, ou se você precisar salvar a largura de banda.

transferir arquivos entre dois sistemas remotos

rsync Você pode copiar arquivos e sincronizar uma pasta local com uma pasta remota em um sistema que tenha Um sistema que possui um acesso ao sistema via SSH, via RSH, ou que está sendo executado rsync como um serviço. Exemplos Aqui usam o SSH para transferência de arquivos, mas os mesmos princípios se aplicam se você deseja fazer isso com rsync em execução como serviço no computador remoto, leia executando o rsync como um serviço quando SSH é Não disponível abaixo para obter mais informações sobre isso.

Para transferir arquivos entre o computador local e um computador remoto, precisamos especificar o endereço do computador remoto, ele pode ser um nome de domínio, um endereço IP, Ou o nome de um servidor que salvamos anteriormente em nosso arquivo de configuração SSH (informações sobre como fazer isso pode ser visto na definição de servidores SSH), seguidos por dois pontos e a pasta que queremos usar para a transferência. Observe que rsync não pode transferir arquivos entre dois sistemas remotos, apenas uma pasta local ou uma pasta remota pode ser usada em conjunto com uma pasta local. Para fazer isso, usamos:

pasta local para pasta remota, usando um domínio, um endereço IP ou servidor definido no arquivo de configuração SSH:
rsync -rtvz carpeta_origen/ [email protected]:/ruta/a/carpeta_destino/
rsync -rtvz folder_origen / [email protected]/ruta/a/carppt_destino/ rsync -rrtvz_origen_name / servername_name: / rota / a / folder_destine /

pasta remota para a pasta local , usando um domínio, um endereço IP ou um servidor definido no arquivo de configuração SSH:
rsync -rtvz [email protected]:/ruta/a/carpeta_origen/ carpeta_destino/
rsync -rtvz user @ xxx.xxx.xxx.xxx:/ ruta / a / carpet_origen / folder_destino /
rsync -rtvz serverName: / rota / a / folder_origen / folder_destine /

excluindo arquivos e diretórios

há muitos casos em que precisamos Para excluir determinados arquivos e diretórios de rsync, um caso comum é quando sincronizamos um projeto local com um repositório remoto ou mesmo com um site vivo, neste caso, poderíamos desejar excluir alguns Diretórios de desenvolvimento e alguns arquivos ocultos a serem transferidos para o site vivo. Excluir arquivos podem ser feitos com --exclude seguido do diretório ou arquivo que queremos excluir. A pasta de origem ou a pasta de destino pode ser um diretório local ou um diretório remoto, conforme explicado na seção anterior.

rsync -rtv --exclude 'directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'archivo.txt' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/directorio' carpeta_origen/ carpeta_destino/
rsync -rtv --exclude 'direccion/a/archivo.txt' carpeta_origen/ carpeta_destino/

As rotas são relativas à pasta a partir da qual estamos chamando rsync, a menos que comece com uma diagonal, caso em que a rota seria absoluta.

outra maneira Para fazer isso é criar um arquivo com a lista de arquivos e diretórios para excluir de rsync, além de padrões (todos os arquivos que estão dentro do padrão determinado seriam excluídos, *. Txt excluiria qualquer arquivo com essa extensão), uma por linha e chamou este arquivo com --exclude-from seguido pelo arquivo que queremos usar para a exclusão dos arquivos. Primeiro criamos e editamos este arquivo em nosso editor de texto favorito, neste exemplo eu uso gedit, mas você pode usar kate, vim, nano ou qualquer outro editor de texto:

touch excluidos.txt
gedit excluidos.txt

Neste arquivo, podemos adicionar o seguinte:

directorio
direccion/relativa/a/directorio
archivo.txt
direccion/relativa/a/archivo.txt
/home/juan/directorio
/home/juan/archivo.txt
*.swp

e, em seguida, ligue para rsync

Além de excluir arquivos que foram excluídos da pasta de origem, como explicado em sincronizar duas pastas com rsync, rsync pode excluir arquivos que são excluídos da transferência, podemos fazer isso com o parâmetro --delete-excluded, por exemplo:

rsync -rtv --exclude-from 'excluidos.txt' --delete-excluded carpeta_origen/ carpeta_destino/

Este comando fará rsync recursivo , preservará os tempos de modificação da pasta de origem, aumentar a verbosidade, excluir todos os arquivos que estão dentro dos padrões no arquivo EX Cluidos.txt e excluir todos os arquivos excluídos se eles existirem na pasta de destino.

Usando o rsync como um serviço quando o SSH não estiver disponível

Isso foi movido para sua própria seção, usando Rsync como um serviço

alguns parâmetros adicionais de rsync

-t Preserva os tempos de modificação dos arquivos que estão sendo transferidos.
-q Exclua todas as mensagens que não são erros, este parâmetro é contrário ao parâmetro -V que mostra muito mais informações de transferência.
-d Copie os arquivos de um diretório sem usar a recursão para copiar os diretórios internos, em dizer, apenas os arquivos são transferidos.
Copie os links symlinks como symlinks
-L Copie os arquivos para os quais um symlink está apontando quando você encontra um symlink.
-W copiar arquivos inteiros, desde quando usamos o algoritmo de transferência de Delta, apenas a parte de um arquivo que foi atualizada é copiada, às vezes isso não é desejado.
--progress mostra o progresso dos arquivos que estão sendo transferidos.
-h Mostra as informações que fornecem rsync em um formato mais legível, As quantidades são dadas em k’s, m’s, g’s, e assim por diante.

notas de pé

o número de opções que rsync dá EUA imensos, podemos definir exatamente quais arquivos que queremos Transferência, que arquivos específicos queremos compactar, quais arquivos que queremos excluir na pasta de destino se esses arquivos existirem, e poderemos lidar com os arquivos do sistema, também, para mais informações, podemos usar man rsync e man rsyncd.conf

Deixe as informações que dizem respeito a backups fora desta publicação, uma vez que isso será coberto, juntamente com a automação do processo de backup, em um Publicação futura.

É possível usar rsync No Windows através do uso de Cygwin, no entanto, eu não tenho um computador Windows disponível no momento (ou plano Tê-lo no futuro próximo), embora eu tenha feito isso, não posso publicar sobre isso. No entanto, se você usar rsync como um serviço do Windows, você precisa adicionar o “scrict mode = false” no rsyncd.conf nos módulos, este Ele fará rsync Não revise as permissões no arquivo secreto, já que se fizesse, falharia porque não seria configurado corretamente (já que eles não funcionam como no Linux ).

Esta publicação pode ser atualizada se houver algo a ser corrigido ou adicionado mais informações se eu vejo necessário.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *