#!/bin/bash

TRYB="$1"
ZRODLO="$2"
CEL="${3:-/tmp/backup}"

function wyswietl_pomoc {
    echo "Użycie: $0 <tryb> <źródło> [cel]"
    echo ""
    echo "Tryby:"
    echo "  backup <katalog_źródłowy> [katalog_docelowy] - utwórz backup"
    echo "  restore <plik_archiwum> <katalog_docelowy>  - przywróć z backup"
    echo ""
    echo "Przykłady:"
    echo "  $0 backup /home/user/dane"
    echo "  $0 backup /home/user/dane /mnt/backup"
    echo "  $0 restore /tmp/backup/dane_2024-01-15_14-30-00.tar.gz /home/user"
    exit 1
}

if [[ $# -lt 2 ]]; then
    wyswietl_pomoc
fi

if [[ "$TRYB" == "backup" ]]; then
    if [[ ! -e "$ZRODLO" ]]; then
        echo "Błąd: Źródło '$ZRODLO' nie istnieje!"
        exit 1
    fi
    
    mkdir -p "$CEL"
    
    NAZWA=$(basename "$ZRODLO")
    DATA=$(date "+%Y-%m-%d_%H-%M-%S")
    PLIK_BACKUP="$CEL/${NAZWA}_${DATA}.tar.gz"
    
    echo "Tworzę backup: $ZRODLO"
    echo "Docelowy plik: $PLIK_BACKUP"
    
    if tar -czf "$PLIK_BACKUP" -C "$(dirname "$ZRODLO")" "$(basename "$ZRODLO")" 2>/dev/null; then
        echo "Sukces! Backup utworzony."
        echo "Ścieżka: $PLIK_BACKUP"
        ls -lh "$PLIK_BACKUP"
        exit 0
    else
        echo "Błąd podczas tworzenia backupu!"
        exit 1
    fi

elif [[ "$TRYB" == "restore" ]]; then
    ARCHIWUM="$ZRODLO"
    KATALOG_DOCELOWY="$CEL"
    
    if [[ ! -f "$ARCHIWUM" ]]; then
        echo "Błąd: Plik archiwum '$ARCHIWUM' nie istnieje!"
        exit 1
    fi
    
    echo "Przywracam z: $ARCHIWUM"
    echo "Docelowy katalog: $KATALOG_DOCELOWY"
    
    mkdir -p "$KATALOG_DOCELOWY"
    
    if tar -xzf "$ARCHIWUM" -C "$KATALOG_DOCELOWY"; then
        echo "Sukces! Pliki przywrócone."
        ls -la "$KATALOG_DOCELOWY"
        exit 0
    else
        echo "Błąd podczas przywracania!"
        exit 1
    fi

else
    echo "Błąd: Nieznany tryb '$TRYB'"
    wyswietl_pomoc
fi