Trabalhando com o RSYNC

Trabalhando com o RSYNC

Como administrador do sistema ou apenas um usuário doméstico consciente de backup, mais cedo ou mais tarde (geralmente mais cedo), você terá que lidar com backups. Desastres acontecem, variando de tempestades elétricas a falhas de condução, e é preciso estar preparado. Não podemos enfatizar o suficiente a importância de ter cópias de dados importantes. Embora todo o conceito de backup seja muito longo para este artigo, focaremos no RSYNC para o que é chamado de backups incrementais.

Os backups incrementais são baseados na ideia de que, depois de ter uma cópia dos dados necessários para fazer backup, backups consequentes dos mesmos dados devem ser incrementais, o que significa que você atualiza apenas a cópia de backup com as diferenças desde que a última operação ocorreu, não Crie outra cópia completa. Detalhamos aqui uma configuração que temos em casa para fazer backup de dados importantes, mas os exemplos aqui podem ser usados ​​em instalações maiores. Depois de começar, você saberá o quê, onde e quando precisar.

Se você possui um servidor de backup que é 24/7, pode criar um Cronjob para fazer backup de seus dados periodicamente. Como nosso exemplo é baseado em casa, temos um servidor de backup, mas como não é o tempo todo, mostraremos como fazê-lo manualmente. O RSYNC precisa ser instalado em ambos os sistemas, e é isso, nenhuma outra tarefa de configuração deve ser realizada, pelo menos em casos simples. Lembre -se de que você não está vinculado a Linux ou outra plataforma UNIX: o RSYNC também está disponível para Windows. Se você está preocupado com a segurança, o RSYNC está trabalhando em SSH e pode ser considerado um substituto seguro para RCP (cópia remota) comando, então é tudo bom.

Trabalhando com o RSYNC

Em nosso cenário, a máquina que contém arquivos a serem backup é uma máquina de testes em Debian; nós simplesmente fizemos um

 # aptitude install rsync 

para instalá -lo e isso era tudo o que tínhamos que fazer nessa máquina. A máquina de backup é um FreeBSD 8.2 estável caixa, e lá fizemos

 # CD/usr/portas/net/rsync && Faça a instalação limpa 

Para instalar o rsync. Não fizemos uma configuração extra em nenhuma dessas máquinas, mas novamente, este é um cenário simples. Leia o manual do RSYNC para obter opções necessárias para o seu caso específico. Antes de chegarmos ao negócio real, vamos explicar um pouco sobre as opções usuais do RSYNC e as opções de linha de comando (sim, sabemos, 90% não leem os manuais). Com o rsync, você pode puxar ou pressionar os dados de/para seu destino, então geralmente a sintaxe será

[PULL] rsync [options] $ fonte $ destino [push] rsync [options] $ destino $ fonte 

O caminho local pode ser qualquer caminho relativo ou absoluto. O caminho remoto é exatamente como o que você usa com o SSH ou alguns outros programas que funcionam sobre SSH: $ user@$ hostName ou $ ipaddress: $ PATH . Traduzindo o que dissemos acima e usando um exemplo prático (a unidade para armazenar backups é montada em /data1 na máquina BSD e queremos fazer backup de todos os filmes do usuário em 10.1.3.98), queremos empurrar arquivos da caixa Debian para a caixa FreeBSD, então fazemos

 $ rsync [opções] usuá[email protected]:/Home/User/Movies//Data1/ 

Do terminal do FreeBSD. É claro que você deve substituir o 'usuário', os locais e os endereços IP com o que for adequado em seu site. Como dissemos, você pode substituir facilmente o endereço IP por um nome de host, seja na sua rede local (certifique -se de editar /etc.hosts) ou um nome de host remoto conhecido pelo seu servidor DNS. Certifique -se também de ter as permissões corretas para a pasta de destino e que você possa ler o diretório de dados de origem também. Usar o comando acima sem opções não fará nada, pois a fonte é um diretório, não um arquivo específico. Você pode usar curingas de shell com rsync, como

 $ rsync [opções] usuá[email protected]:/home/user/filmes/*/data1/ 

Como o RSYNC é um software inteligente, é melhor se você usar

 $ rsync -avr usuá[email protected]:/Home/User/Movies//Data1/ 

que copiará os dados no diretório de filmes no modo de arquivo (-a) verbosamente (-v) e recursivamente (-r). Para encurtar a história, se você quiser copiar um diretório inteiro, não se esqueça de -r e se você quiser exatamente o oposto, use -d, que copiará apenas a estrutura do diretório, sem os arquivos. Se a largura de banda é uma preocupação, adicione a bandeira -z, mas lembre -se de que sempre há uma troca entre a banda com tempo e o tempo da CPU: dados compactados enfatizam mais as máquinas, as duas, porque uma compacta e envia, o outro recebe e descompacta. Em poucas palavras, foi tudo o que realmente fizemos para o nosso caso aqui. Usaremos os comandos exatos mais a bandeira -backup mais tarde, quando desejarmos sincronizar os dados da caixa de backup e, como afirmado antes, apenas as diferenças serão sincronizadas. No entanto, apresentaremos outras opções úteis e amplamente usadas para o RSYNC, já que este é um dos muitos cenários em que o RSYNC pode atendê -lo, especialmente que é pequeno e rápido.

Outras opções para o RSYNC

O RSYNC tem muitas outras opções úteis: o que fizemos foi apenas para dar um exemplo comum e simples. A bandeira -e permite especificar o shell remoto para usar com o rsync, como

 $ rsync -e ssh [argumentos] 

Se você deseja não sincronizar arquivos mais recentes no lado receptor, o uso -u o levará lá. -O progresso mostrará um bom relatório ao vivo detalhado sobre o processo de sincronização remota. -Delete excluirá o arquivo na máquina de destino, se já estiver lá. Se o arquivo não existir e você não deseja que ele seja criado, então você precisa de pura atualização dos arquivos já existentes, use -existente. Quero ver as mudanças? Não há problema, use -i.

Agora, estas são apenas uma pequena parte da infinidade de opções que o RSYNC oferece, vamos permitir que você descubra o resto. Então, nosso comando inicial, com todas essas novas opções que aprendemos, ficaria assim:

 $ rsync -e ssh -avriz --progress -user [email protected]:/Home/User/Movies//Data1/ 

Esperamos que você encontre esse software o máximo que gostamos, e se você tiver alguma dúvida, sim, repetimos isso repetidamente: use o manual, Luke. Lembre -se de usar o RSYNC com cuidado, desde então, quando você se reuniu, algumas de suas opções podem ser bastante destrutivas. No final, para ajudá-lo a lidar com situações diárias, apresentaremos alguns exemplos:

Mais exemplos do RSYNC

1. Digamos que você queira sincronizar apenas um arquivo. Obviamente, você não precisa -r, pois isso é específico do diretório, então você apenas fará

 $ rsync -v usuário@host: etc/adduser.conf /root / 

2. Talvez você queira brincar com padrões mais avançados do que o seu shell pode fornecer, ou você deseja simplesmente excluir/incluir alguns arquivos/diretórios. Você apenas usará -include e -exclude, assim:

 $ rsync -avz --include 'g*' --exclude '*' usuário@host:/etc//root/config/ 

Este comando copiará apenas diretórios de / etc / que começam com um 'g' e excluirá todo o resto.

3. Talvez você queira limitar o tamanho máximo do tamanho do arquivo RSYNC transferências do destino. Pode -se usar -max -size = 'tamanho' onde 'tamanho' pode ser afixado com k para kb, m para mb e g para GB.

$ rsync -avz - -limit -size = '2g' /home /user /filmes /backupmedia

4. Conversamos, até agora, sobre o quão bom é o RSYNC para backups incrementais. Mas se você quiser transferir o arquivo inteiro, tudo de novo, você está livre para fazê -lo. Basta usar -w:

 $ rsync -avzw/home/user/filmes/hackers2.Avi /BackupMedia / 

5. Você sabia que o rsync pode executar comandos na máquina remota para ajudá -lo a ter uma lista do que copiar/sincronizar? Pode, e funciona da seguinte maneira:

 $ rsync -avrz user@host: "find/home/user/desenvolvimento/-name *.c -Print "\/backup/desenvolvimento/ 

6. Se você deseja alterar o método de criptografia padrão que o SSH usa, use -rsh:

 $ rsync -avz -rsh = "ssh -c arcfour -l user" /fonte /destino 

Você pode querer usar isso especialmente se estiver em uma máquina muito lenta.

7. Este ponto trata da preservação de vários atributos dos arquivos que estão sendo copiados: -P preserva as permissões, -x preserva xattrs, -a preserva as ACLs (seu sistema de arquivos de origem deve ter o conceito de ACLs, é claro), -o preserva o proprietário (apenas o superusuário ), -H preserva links rígidos e -g preserva o grupo. Faça uma pesquisa após a palavra "preservar" dentro do manual do RSYNC se o que você deseja preservar não estiver listado aqui. Lembre -se de que -A faz a maior parte da parte de preservação para você, mas se você quiser um controle de granulação mais refinada, está livre para fazê -lo.

 $ rsync -vzpxaohg /fonte /destino 

8. O RSYNC é usado por proprietários de espelhos em todos os lugares para se manter atualizado com o (s) projeto (s) que eles estão espelhando. aqui estão alguns exemplos:

$ rsync -Vaz -Delete FTP4.de.FreeBSD.org :: FreeBSD// PUB/ FREEBSD/ $ RSYNC -AVZ - -DELETE -SAFE -LINKS RSYNC.apache.org :: apache -dist/path/to/espelho $ rsync -auh rsync: // rsync.Chiark.Greenend.org.UK/FTP/Usuários/Sgtatham/Putty-Website-Mirror/ . 

9. Queremos emitir uma palavra final de aviso: o final '/' no endereço de origem é importante. Se você fizer

 $ rsync -avz /fonte /destino 

você terá um resultado diferente do que se tivesse feito

 $ rsync -avz /fonte / /dstination 

Vamos deixar você descobrir qual é a diferença, no entanto, não tente essa descoberta em dados importantes!

Tutoriais do Linux relacionados:

  • Como testar o estresse da sua CPU no Linux
  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Exemplos RSYNC no Linux
  • Como particionar a unidade USB no Linux
  • Como usar o Google Drive no Linux
  • Como comparar o desempenho do disco no Linux
  • Ubuntu 20.04 Guia
  • Coisas para instalar no Ubuntu 22.04
  • Uma introdução à automação, ferramentas e técnicas do Linux