#!/bin/bash
# Skrypt archivedir tworzący skompresowane archiwum wskazanego katalogu.

maxarchivedir=10           # Wielkość w blokach 'dużego' katalogu.
compress=gzip              # Zmień na swój ulubiony program kompresujący.
progname=$(basename $0)    # Wyświetlenie komunikatów o błędach
                           # w bardziej czytelnym formacie.

if [ $# -eq 0 ] ; then     # Brak argumentów? Mamy problem.
  echo "Użycie: $progname katalog" >&2 ;exit 1
fi

if [ ! -d $1 ] ; then
  echo "${progname}: katalog $1 nie istnieje." >&2; exit 1
fi

if [ "$(basename $1)" != "$1" -o "$1" = "." ] ; then
  echo "${progname}: podaj nazwę podkatalogu." >&2
  exit 1
fi

if [ ! -w . ] ; then
  echo "${progname}: zapisanie archiwum w bieżącym katalogu nie jest możliwe." >&2
  exit 1
fi

# Czy tworzone archiwum będzie wyjątkowo duże? Sprawdźmy to.

dirsize="$(du -s $1 | awk '{print $1}')"

if [ $dirsize -gt $maxarchivedir ] ; then
  echo -n "Uwaga: katalog $1 ma wielkość $dirsize bloków. Archiwizować? [n] " 
  read answer
  answer="$(echo $answer | tr '[:upper:]' '[:lower:]' | cut -c1)"
  if [ "$answer" != "t" ] ; then
    echo "${progname}: tworzenie archiwum katalogu $1 przerwane." >&2
    exit 0
  fi
fi

archivename="$1.tgz"

if tar cf - $1 | $compress > $archivename ; then
  echo "Archiwum katalogu $1 zapisane pod nazwą $archivename."
else
  echo -n "Uwaga: podczas archiwizowania katalogu $1 za pomocą polecenia tar"
  echo " pojawiły się błędy."
fi

exit 0
