27Jun

Como usar o rsync para fazer backup de seus dados no Linux

bandeira

rsync é um protocolo construído para sistemas semelhantes a Unix que oferece uma versatilidade inacreditável para fazer backup e sincronizar dados. Ele pode ser usado localmente para fazer backup de arquivos em diretórios diferentes ou pode ser configurado para sincronizar pela Internet para outros hosts.

Pode ser usado em sistemas Windows, mas está disponível somente em várias portas( como o Cygwin), então, neste modo, estaremos falando sobre configurá-lo no Linux. Primeiro, precisamos instalar / atualizar o cliente rsync. Nas distribuições da Red Hat, o comando é "yum install rsync" e no Debian é "sudo apt-get install rsync."

rsync1
O comando no Red Hat / CentOS, depois de fazer logon como root( observe que algumas distribuições recentes do Red Hatsuporte ao método sudo).

rsync4
O comando no Debian / Ubuntu.

Usando rsync para backups locais

Na primeira parte deste tutorial, vamos fazer backup dos arquivos de Directory1 para Directory2.Ambos os diretórios estão no mesmo disco rígido, mas isso funcionaria exatamente o mesmo se os diretórios existissem em duas unidades diferentes. Existem várias maneiras diferentes de abordar isso, dependendo do tipo de backups que você deseja configurar. Para a maioria dos propósitos, a seguinte linha de código será suficiente:

$ rsync -av --delete /Directory1/ /Directory2/

O código acima sincronizará o conteúdo de Directory1 para Directory2 e não deixará diferenças entre os dois. Se a rsync achar que o Directory2 possui um arquivo que Directory1 não, ele irá excluí-lo. Se o rsync encontrar um arquivo que foi alterado, criado ou excluído no Directory1, ele refletirá essas mesmas alterações no Directory2.

Existem muitos switches diferentes que você pode usar para rsync para personalizá-lo para suas necessidades específicas. Aqui está o que o código acima diz à rsync para fazer com os backups:

1. -a = recursive( recurse in diretórios), links( copiar links simbólicos como links simbólicos), perms( preservar permissões), vezes( preservar tempos de modificação), grupo( grupo preservar), proprietário( preservar proprietário), preservar arquivos de dispositivo e preservar arquivos especiais.
2. -v = verbose. A razão pela qual eu acho detalhada é importante é assim você pode ver exatamente o que o rsync está fazendo backup. Pense sobre isso: e se o seu disco rígido estiver indo mal e começar a excluir arquivos sem o seu conhecimento, então você executa seu script rsync e ele empurra essas alterações para seus backups, excluindo assim todas as instâncias de um arquivo que você não queria obterlivrado?
3. -delete = Isso diz a rsync para excluir quaisquer arquivos que estejam no Directory2 que não estejam no Directory1.Se você optar por usar esta opção, recomendo também usar as opções verbosas, por razões mencionadas acima.

Usando o script acima, aqui está a saída gerada usando rsync para backup Directory1 para Directory2.Observe que, sem o interruptor detalhado, você não receberia tais informações detalhadas.

rsync2

A captura de tela acima nos diz que File1.txt e File2.jpg foram detectados como sendo novos ou alterados das cópias existentes no Directory2 e, portanto, foram copiados. Dica Noob: observe as barras laterais no final dos diretórios no meu comando rsync - são necessárias, não se esqueça de as lembrá-las.

Vamos passar por mais alguns switches úteis para o final deste tutorial, mas lembre-se de que, para ver uma listagem completa, você pode digitar "man rsync" e ver uma lista completa de switches para usar.

Isso abrange tanto quanto os backups locais. Como você pode dizer, o rsync é muito fácil de usar. Ele fica um pouco mais complexo ao usá-lo para sincronizar dados com um host externo na Internet, mas mostraremos uma maneira simples, rápida e segura de fazer isso.

Usando o rsync para backups externos

rsync pode ser configurado de várias formas diferentes para backups externos, mas vamos abordar o método mais prático( também o mais fácil e mais seguro) de tunelar o rsync através do SSH.A maioria dos servidores e até muitos clientes já possuem SSH, e pode ser usado para seus backups rsync. Vamos mostrar o processo para obter uma máquina Linux para fazer backup para outra em uma rede local. O processo seria exatamente o mesmo se um host estivesse na internet em algum lugar, basta notar que a porta 22( ou qualquer porta em que você tenha configurado o SSH) precisaria ser reencaminhada para qualquer equipamento de rede do lado do servidor das coisas.

No servidor( o computador que receberá os backups), verifique se SSH e rsync estão instalados.

# yum -y instale ssh rsync

# sudo apt-get install ssh rsync

Além de instalar SSH e rsync no servidor, tudo o que realmente precisa ser feito é configurar os repositórios no servidor onde você gostaria que os arquivos fossem suportadosup e certifique-se de que o SSH esteja bloqueado. Verifique se o usuário que você planeja usar tem uma senha complexa, e também pode ser uma boa idéia mudar a porta que SSH escuta( o padrão é 22).

Vamos executar o mesmo comando que fizemos para usar o rsync em um computador local, mas incluímos as adições necessárias para o tuning rsync através do SSH para um servidor na minha rede local. Para o usuário "geek" conectando-se a "192.168.235.137" e usando os mesmos parâmetros como acima( -av -delete), vamos executar o seguinte:

$ rsync -av -delete -e ssh /Directory1/ [email protected]: /Directory2/

Ifvocê tem SSH ouvindo em alguma porta diferente de 22, você precisaria especificar o número da porta, como neste exemplo, onde eu uso a porta 12345:

$ rsync -av -delete -e 'ssh -p 12345' /Directory1/ [email protected]: /Directory2/

rsync3

Como você pode ver a partir da captura de tela acima, a saída fornecida ao fazer backup em toda a rede é praticamente o mesmo que ao fazer o backup localmente, o único que muda é o comando que você usa. Observe também que ele solicitou uma senha. Isso é autenticar com SSH.Você pode configurar chaves RSA para ignorar este processo, o que também simplificará a automação rsync.

Automação de backups rsync O

Cron pode ser usado no Linux para automatizar a execução de comandos, como rsync. Usando o Cron, podemos fazer com que nosso sistema Linux execute backups noturnos, ou, no entanto, você gostaria que eles executassem.

Para editar o arquivo de tabela cron para o usuário com o qual você está logado, execute:

$ crontab -e

Você precisará estar familiarizado com vi para editar este arquivo. Digite "I" para inserir e, em seguida, comece a editar o arquivo de tabela cron.

Cron usa a seguinte sintaxe: minuto da hora, hora do dia, dia do mês, mês do ano, dia da semana, comando.

Pode ser um pouco confuso no início, então deixe-me dar um exemplo. O comando a seguir executará o comando rsync todas as noites às 10 horas:

0 22 * ​​* * rsync -av --delete /Directory1/ /Directory2/

O primeiro "0" especifica o minuto da hora e "22" especifica 10 PM.Como queremos que esse comando seja executado diariamente, deixaremos o restante dos campos com asteriscos e, em seguida, colaremos o comando rsync.

Depois de concluir a configuração do Cron, pressione escapar e digite ": wq"( sem as aspas) e pressione enter. Isso salvará suas alterações em vi.

Cron pode ter muito mais em profundidade do que isso, mas continuar com isso seria além do escopo deste tutorial. A maioria das pessoas só quer um simples backup semanal ou diário, e o que mostramos pode facilmente realizar isso. Para mais informações sobre o Cron, consulte as páginas man.

Outras características úteis

Outra coisa útil que você pode fazer é colocar seus backups em um arquivo zip. Você precisará especificar onde deseja que o arquivo zip seja colocado e, em seguida, rsync esse diretório para o diretório de backup. Por exemplo:

$ zip /ZippedFiles/ archive.zip /Directory1/ & amp;rsync -av --delete /ZippedFiles/ /Directory2/

rsync5

O comando acima leva os arquivos do Directory1, coloca-os no /ZippedFiles/ archive.zip e depois rsyncs esse diretório para Directory2.Inicialmente, você pode pensar que este método se revelaria ineficaz para backups grandes, considerando que o arquivo zip mudará sempre que a menor alteração for feita para um arquivo. No entanto, o rsync só transfere os dados alterados, portanto, se o seu arquivo zip for de 10 GB e, em seguida, você adicione um arquivo de texto ao Directory1, o rsync saberá que é tudo o que você adicionou( mesmo que esteja no zip) e transfira apenas alguns kilobytesde dados alterados.

Há algumas maneiras diferentes de criptografar seus backups rsync. O método mais fácil é instalar criptografia no disco rígido em si( aquele em que seus arquivos estão sendo copiados).Outra maneira é criptografar seus arquivos antes de enviá-los para um servidor remoto( ou outro disco rígido, o que quer que você esteja fazendo backup).Vamos abordar esses métodos em artigos posteriores.

Independentemente das opções e recursos que você escolher, a rsync prova ser uma das ferramentas de backup mais eficientes e versáteis até a data, e até mesmo um script rsync simples pode salvá-lo de perder seus dados.