Como usar o rsync para fazer backup de seus dados no Linux
O rsync é um protocolo criado para sistemas Unix-like que fornece versatilidade incrível para backup e sincronização de dados. Ele pode ser usado localmente para fazer backup de arquivos em diretórios diferentes ou pode ser configurado para sincronizar pela Internet com outros hosts.
Ele pode ser usado em sistemas Windows, mas está disponível somente através de várias portas (como o Cygwin), portanto, neste tutorial, falaremos sobre configuração 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”.
O comando no Red Hat / CentOS, depois de logar como root (note que algumas distribuições recentes do Red Hat suportam o método sudo).
O comando no Debian / Ubuntu.
Usando o rsync para backups locais
Na primeira parte deste tutorial, faremos backup dos arquivos de Directory1 para Directory2. Ambos os diretórios estão no mesmo disco rígido, mas isso funcionaria exatamente da mesma forma se os diretórios existissem em duas unidades diferentes. Existem várias maneiras diferentes de abordar isso, dependendo do tipo de backup 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 irá sincronizar o conteúdo de Directory1 para Directory2 e não deixará diferenças entre os dois. Se o rsync descobrir que o Directory2 tem um arquivo que Directory1 não possui, ele será excluído. Se o rsync encontrar um arquivo que foi alterado, criado ou excluído no Directory1, ele refletirá essas mesmas alterações no Directory2.
Há muitos switches diferentes que você pode usar para o rsync personalizá-lo de acordo com suas necessidades específicas. Aqui está o que o código acima diz ao rsync para fazer com os backups:
1. -a = recursivo (recursão em diretórios), links (copiar links simbólicos como links simbólicos), perms (preservar permissões), tempos (preservar tempos de modificação), grupo (preservar grupo), proprietário (preservar proprietário), preservar arquivos de dispositivo e preservar arquivos especiais.
2. -v = detalhado. A razão pela qual eu acho o verbose importante é para que você possa ver exatamente o que o rsync está fazendo no backup. Pense sobre isso: E se o seu disco rígido estiver indo mal e começar a excluir arquivos sem o seu conhecimento, você executará o script rsync e enviará essas alterações para os backups, excluindo assim todas as instâncias de um arquivo que você não deseja obter livrar-se?
3. -delete = Isso diz ao rsync para excluir quaisquer arquivos que estejam no Directory2 que não estejam no Directory1. Se você optar por usar essa opção, recomendo também usar as opções detalhadas, pelas razões mencionadas acima.
Usando o script acima, aqui está a saída gerada usando o rsync para fazer backup do Directory1 para o Directory2. Note que sem a troca detalhada, você não receberia informações tão detalhadas.
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 armazenados em backup. Dica do Noob: Observe as barras à direita no final dos diretórios no meu comando rsync - essas são necessárias, lembre-se delas.
Vamos passar por mais alguns switches úteis no final deste tutorial, mas lembre-se de que, para ver uma lista completa, você pode digitar "man rsync" e visualizar uma lista completa de opções para usar.
Isso cobre o que se refere aos 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 pela Internet, mas mostraremos uma maneira simples, rápida e segura de fazer isso.
Usando o rsync para backups externos
O rsync pode ser configurado de várias maneiras diferentes para backups externos, mas iremos passar pelo método mais prático (também o mais fácil e seguro) de tunelamento do rsync através do SSH. A maioria dos servidores e até mesmo muitos clientes já possuem SSH e podem ser usados para seus backups de rsync. Vamos mostrar-lhe 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, apenas observe que a porta 22 (ou qualquer porta na qual você tenha o SSH configurado) precisaria ser encaminhada em qualquer equipamento de rede no lado do servidor..
No servidor (o computador que receberá os backups), verifique se o SSH e o rsync estão instalados.
# yum -y instala o ssh rsync
# sudo apt-get instala ssh rsync
Além de instalar o SSH e o rsync no servidor, tudo o que realmente precisa ser feito é configurar os repositórios no servidor onde você deseja que os arquivos sejam salvos em backup e certificar-se de que o SSH esteja bloqueado. Certifique-se de que o usuário que você planeja usar tenha uma senha complexa, e também pode ser uma boa idéia trocar a porta que o SSH escuta (o padrão é 22).
Vamos executar o mesmo comando que fizemos para usar o rsync em um computador local, mas inclua as adições necessárias para o tunelamento do rsync por SSH para um servidor na minha rede local. Para o usuário "geek" conectando-se a "192.168.235.137" e usando os mesmos switches acima (-av -delete), executaremos o seguinte:
$ rsync -av -delete -e ssh / Directory1 / [email protected]: / Directory2 /
Se você tiver o SSH escutando em alguma porta diferente de 22, precisará especificar o número da porta, como neste exemplo em que uso a porta 12345:
$ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /
Como você pode ver na captura de tela acima, a saída dada ao fazer o backup pela rede é praticamente a mesma que ao fazer o backup local, a única coisa que muda é o comando que você usa. Observe também que ele solicitou uma senha. Isso é para autenticar com o SSH. Você pode configurar as chaves RSA para ignorar esse processo, o que também simplificará a automação do rsync.
Automatizando backups de rsync
O Cron pode ser usado no Linux para automatizar a execução de comandos, como o rsync. Usando o Cron, podemos fazer com que o nosso sistema Linux execute backups noturnos, ou sempre que você quiser que eles sejam executados.
Para editar o arquivo da tabela cron para o usuário com o qual você efetuou login, execute:
$ crontab -e
Você precisará estar familiarizado com o vi para editar este arquivo. Digite “I” para inserir e, em seguida, comece a editar o arquivo da 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 começo, então deixe-me dar um exemplo. O comando a seguir executará o comando rsync todas as noites às 22h:
0 22 * * * rsync -av --delete / Directory1 / / Directory2 /
O primeiro "0" especifica o minuto da hora e "22" especifica 10 da noite. Como queremos que este comando seja executado diariamente, deixaremos o resto dos campos com asteriscos e depois colamos o comando rsync.
Depois que você terminar de configurar o Cron, pressione escape e digite “: wq” (sem as aspas) e pressione enter. Isso salvará suas alterações no vi.
O Cron pode ser muito mais profundo do que isso, mas falar sobre isso estaria além do escopo deste tutorial. A maioria das pessoas quer apenas um backup semanal ou diário simples, e o que mostramos pode ser feito facilmente. Para mais informações sobre o Cron, por favor veja as man pages.
Outros recursos ú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 depois rsync esse diretório para o seu diretório de backup. Por exemplo:
$ zip /ZippedFiles/archive.zip / Directory1 / && rsync -av --delete / ZippedFiles / / Directory2 /
O comando acima pega os arquivos do Directory1, coloca-os em /ZippedFiles/archive.zip e então rsyncs esse diretório para Directory2. Inicialmente, você pode pensar que esse método seria ineficiente para backups grandes, considerando que o arquivo zip será alterado toda vez que for feita a menor alteração em um arquivo. No entanto, o rsync transfere apenas os dados alterados, portanto, se seu arquivo zip tiver 10 GB e você adicionar um arquivo de texto ao Directory1, o rsync saberá que tudo isso foi adicionado (embora esteja em um zip) e transferirá apenas alguns kilobytes de dados alterados.
Há algumas maneiras diferentes de criptografar seus backups de rsync. O método mais fácil é instalar a criptografia no próprio disco rígido (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). Cobriremos esses métodos em artigos posteriores.
Quaisquer que sejam as opções e os recursos escolhidos, o rsync prova ser uma das ferramentas de backup mais eficientes e versáteis até o momento, e até mesmo um simples script rsync pode evitar que você perca seus dados.