#!/usr/bin/env bash ORIGEM=$1 DESTINO=$2 NOME=$3 QTDE=${4:-60} CONTADOR=0 PLATFORM=$(uname) if [ "$ORIGEM" == "" -o "$DESTINO" == "" -o "$NOME" == "" ]; then echo "bkptool - Ferramenta de Realização de Backups Diferenciais" echo echo "$0 [qtde=30]" echo echo " - Origem : pasta a ser feito o backup" echo " - Destino : pasta de destino do backup" echo " - Id : identificador do backup, deve ser apenas uma palavra" echo " - Qtde (opcional) : quantidade de backups anteriores (alám do atual) que devem ser mantidos na pasta de destino (Padrão: 30)" echo exit 1 fi if [ ! -d $ORIGEM ]; then echo "Pasta de origem \"$ORIGEM\" inexistente" exit 1 fi if [ ! -d $DESTINO ]; then echo "Pasta de destino \"$DESTINO\" inexistente" exit 1 fi ULTIMO_BACKUP=`find $DESTINO -maxdepth 1 -name "$NOME.*" | sort -nr | head -n 1` find $DESTINO -maxdepth 1 -name "$NOME.*" | sort -nr | tail -n +`expr $QTDE + 1` | while read antigo; do rm -rf "$antigo" done ID=`date +%Y-%m-%d-%H-%M-%S` BACKUP_ATUAL="$DESTINO/$NOME.$ID" echo "- Criando pasta $BACKUP_ATUAL" mkdir $BACKUP_ATUAL if [ "$ULTIMO_BACKUP" != "" ]; then echo "- Copiando pasta $ULTIMO_BACKUP para $BACKUP_ATUAL" if [ "$PLATFORM" == "FreeBSD" ]; then pasta=$(pwd) cd $ULTIMO_BACKUP pax -rwl -pe . $BACKUP_ATUAL cd $pasta else cp -al $ULTIMO_BACKUP/. $BACKUP_ATUAL fi fi echo "- Executando rsync de $ORIGEM para $BACKUP_ATUAL" rsync -a --delete $ORIGEM/ $BACKUP_ATUAL