Witajcie.
Jakiś czas temu publikowałem prosty skrypt do robienia backupu przyrostowego za pomocą rsycn.
Dziś z potrzeby i nudy postanowiłem udoskonalić trochę poprzednią wersję.
Changelog
v.1.1
– Wyszukiwanie najnowszego backupu do różnicowej kopii
– Zmiana sposobu usuwania starych kopii
v.1.0
– Pierwsza wersja
Opis
Skrypt ma za zadanie tworzenie kopii przyrostowej za pomocą rsync z dowolnego miejsca (zdalnie, lokalnie oraz inne które obsługuje rsync)
Dodatkowo mamy możliwość określania Źródła, Celu, Ilość przechowywanych kopii.
Do poprawnego działania wymagany jest system Linux/Mac oraz program sudo
Kod źródłowy
#!/bin/sh
# Katalog Docelowy (bez ostatniego /)
BACKUP_DIR=/mnt/backup_vpslpiot
# Katalog źródłowy
[email protected]:/
# Ilość przechowywanych kopii (1 kopia dziennie)
NUM_BACKUP=4
# Jeżeli nie ma katalogu dla kopii to go tworzymy
if [ ! -d $BACKUP_DIR ]
then
mkdir -p $BACKUP_DIR
fi
# Wywalamy najstarszy backup
COUNT=0
for i in $(find "$BACKUP_DIR" -maxdepth 1 -type d | sort -Vr);
do
if [ "$i" != "$BACKUP_DIR" ]
then
COUNT=`expr $COUNT + 1`
if [ $COUNT -gt $NUM_BACKUP ]
then
echo "Deleting: $i"
sudo rm -rf "$i"
fi
fi
done
# Pobieramy ostatni katalog backupu
i=1
while [ $i -le 30 ];
do
#statements
LAST_BACKUP=$(date -I -d "$i day ago")
if [ -d $BACKUP_DIR/$LAST_BACKUP ]
then
echo "Found newst backup: $LAST_BACKUP"
break
fi
i=`expr $i + 1`
done
# echo "$LAST_BACKUP"
CURRENT_BACKUP=$(date -I)
IGNORE_DIR='--exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/sys'
echo "sudo rsync -avh --progress $IGNORE_DIR --link-dest=$BACKUP_DIR/$LAST_BACKUP $SOURCE_DIR $BACKUP_DIR/$CURRENT_BACKUP"
notify-send 'Start make Backup'
sudo rsync -ah $IGNORE_DIR --link-dest=$BACKUP_DIR/$LAST_BACKUP $SOURCE_DIR $BACKUP_DIR/$CURRENT_BACKUP
notify-send 'End make Backup'