Supondo que haja um disco de backup em /media/mydisk
e eu quero o 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 fat!
#!/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
Isso ( cp -al
) cria hardlinks de arquivos em vez de copiá-los. Então não há mais espaço usado.
O Rsync irá recriar (copiar na gravação) cada arquivo modificado, então o backup rotacionado manterá a versão antiga.