Questão Como criar um backup local?


Eu tenho um servidor web Linux (Ubuntu 12.04) e eu quero criar um cronjob para gerar um backup diferencial, localmente (na mesma máquina).

Isso é possível? Com diferencial, quero dizer que a primeira vez que copia tudo, mas nos tempos seguintes, apenas copia novos arquivos. Mas eu também quero ter muitos pontos no tempo, quero dizer, pelo menos, 3 ou 4 backups dos quais eu posso restaurar tudo.

Eu verifiquei esta página, mas existem muitas ferramentas diferentes, e eu acho que cada uma tem suas próprias dicas: https://help.ubuntu.com/community/BackupYourSystem#Types_of_Backup

Por exemplo, me disseram que o armazenamento de .tar.gz tem um limite de tamanho.

Se você tem alguma sugestão simples, mesmo que não seja diferencial, é bem vindo.


0


origem




Respostas:


Supondo que haja um disco de backup /media/mydisk e eu quero backup /home/user, Este pequeno script permitirá que você mantenha o backup de 10 históricos, mas mantendo apenas arquivos diferentes mais de uma vez.

Isso precisa que o disco de backup seja formatado com um sistema de arquivos POSIX, como Ext4, XFS ou outro, mas não ntfs, nem gordo!

#!/bin/bash
backRepo=/media/mydisk
backSrce=/home/user
backDest=home
backCopy=copy
backCount=9

[ -d "$backRepo/$backDest" ] || mkdir "$backRepo/$backDest"

cd $backSrce || exit 1
rsync -ax --delete --exclude '*~' --exclude '.DStore' . "$backRepo/$backDest/."

cd $backRepo
[ -d "$backCopy.$backCount" ] && rm -fR "$backCopy.$backCount"
for ((i=$backCount;i--;));do
    [ -d "$backCopy.$i" ] && mv "$backCopy.$i" "$backCopy.$((i+1))"
  done
((i++))

cp -al $backDest $backCopy.$i

Este (cp -al) crie hardlinks de arquivos em vez de copiá-los. Então não há mais espaço usado.

Rsync será recriar (cópia na gravação) cada arquivo modificado, então o backup girado mantém a versão antiga.


1



Interessante, obrigado. Eu tenho algumas perguntas: O que é o .DStore? E parece que esse script manterá arquivos deletados para sempre, certo? - ChocoDeveloper
.DStore  e *~ fique lá apenas para amostra. Isso excluirá todos .DStore arquivos (alguns arquivos de cache de configuração do localizador do Mac OS) e todos os arquivos cujo nome termina com um til ~ (backup para editores como emacs). - F. Hauri
Não para sempre, depois de 10 rotação, mais antigo será definitivamente excluído. - F. Hauri
Eu amo esse script, alternativa poderia usar datepart, como i=$(date +%A) em vez de um simples contador, por diariamente rotação ou date +%m para mensal, etc ... - F. Hauri


rsync é uma ótima ferramenta para copiar arquivos, ele pode copiar apenas os bits de mudança em um arquivo e fazer backup dos arquivos de destino antes de sobrescrevê-los.

Você pode facilmente editar o seu crontab para correr rsync periodicamente para o seu backup principal. Então você pode copiar os backups para os arquivos alterados e você terá mais pontos de tempo. Ou você pode copiar os dados de backup antes de executar rsync ter imagem completa para cada ponto de tempo.

A menos que você posteriormente copie os arquivos em outro lugar, eu não acho que seja necessário usar tar.


1