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 :)
Jeśli nie zaznaczono inaczej, Zawartość tej strony dostępna jest na licencji GNU Free Documentation License.