Backup pełny i przyrostowy z -N dni
Skrypt wykonuje backup całego /home/alpha użytkownika alpha do folderu /home/alpha/backup
#!/bin/sh
#ustawienia sciezek
SCIEZKA=/home/alpha/backup
KATALOG=$SCIEZKA/$(date +%Y-%m-%d-%H:%M)
DOZACHOWANIA="/home/alpha/"
#ustawienia domyslne
TRYB="PELNY"
typ="copy"
#wyswietlenie informacji jezeli bedzie mniej niz 2 argumenty.
if [ $# -lt 2 ];
then
echo "Informacja: $(basename $0) <TAR|COPY> <PELNY|przyrostowy X dni wstecz>"
fi
#jezeli podany jest drugi argument w linii polecen, to przystap do analizy
if [ ! -z "$2" ];
then
case "$2" in
PELNY|pelny|full)
TRYB=PELNY
;;
*)
TRYB=$2
;;
esac
fi
#jezeli pierwszy argument nie jest pusty do nalezy go przeanalizowac
if [ ! -z "$1" ];
then
case "$1" in
TAR|tar)
typ=tar
;;
copy|COPY)
typ=copy
;;
esac
fi
#jezeli katalog docelowy backupu nie istnieje, to nalezy go stworzyc
if [ ! -e $KATALOG ];
then
mkdir -p $KATALOG;
fi
#funkcja robiaca backup za pomoca tara
function zrob_tar()
{
if [ "$TRYB" = "PELNY" ];
then
echo "Wykonuj pelny backup tworzc archiwum TAR"
tar -zcp -f $KATALOG/pelny.tgz $DOZACHOWANIA
else
echo "Wykonuj kopie bezpieczentwa z plikow modyfikowanych maksymalnie $TRYB dni wstecz"
tar -zcp --newer-mtime "$TRYB days ago" -f $KATALOG/przyrostowy.tgz $DOZACHOWANIA
fi
}
#funkcja robiaca backup za pomoca cp
function zrob_copy()
{
if [ "$TRYB" = "PELNY" ];
then
echo "Robiaca pelna kopia"
for zrodlo in $DOZACHOWANIA;
do
echo -e "\tkatalog $zrodlo"
cp --parents -a $zrodlo $KATALOG
done
else
echo "Kopiuje pliki zmieniane maksymalnie $TRYB dni temu"
for s in $DOZACHOWANIA;
do
lista=`find $s -ctime -$TRYB`
echo -e "\tkatalog $s"
if [ ! -z "$lista" ];
then
for plik in $lista; do
cp --parents -a $plik $KATALOG
done
fi
done
fi
}
echo "Sposob backupu: $typ, Tryb: $TRYB"
#w zaleznosci od sposobu przechowywania backupu, uruchamiamy odpowiednie funkcje.
case "$typ" in
tar)
zrob_tar
;;
copy)
zrob_copy
;;
esac
echo "Backup wykonany :)"
Uruchomienie:
sh backup.sh
Wynik:
Backup wykonany :)





