#!/bin/bash
# Script zum Archivieren von Benutzer und Gruppenverzeichnissen
# nachdem diese geloescht wurden.
# (C) 2015 Stefan Schaefer invis-server.org
# Questions: stefan@invis-server.org

# License: GPLv3
# Dieses Programm ist freie Software. Sie können es unter den Bedingungen der 
# GNU General Public License, wie von der Free Software Foundation veröffentlicht,
# weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder
# (nach Ihrer Option) jeder späteren Version.

# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen
# von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite 
# Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. 
# Details finden Sie in der GNU General Public License.

# Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem 
# Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>. 

#Konfigurationsdaten
conffile="/etc/invis/invis.conf"
passfile="/etc/invis/invis-pws.conf"

# Funktionen
# Werte aus Konfigurationsdatendatei extrahieren
# $1 = Konfigurationsdatei, $2 = Parameter, $3 Wert (Feld)
getconfdata() {
    cat $1 |grep "$2" | cut -d ":" -f $3
}

# Datum der Archivierung
archdate=$(date "+%Y%m%d")

# Zu durchsuchende Verzeichnisse
folders=("/home" "/var/lib/samba/profiles" "/srv/shares/portal/downloads" "/srv/shares/portal/uploads" "/srv/shares/gruppen")

# Archivierungsziele
grouparchive="/srv/shares/archiv/gruppen"
userarchive="/srv/shares/archiv/user"

# Anlegen, wenn nicht vorhanden
if [[ ! -d $grouparchive ]]; then
    mkdir -p $grouparchive
fi

if [[ ! -d $userarchive ]]; then
    mkdir -p $userarchive
fi

# Archivieren
for dir in ${folders[*]}; do
    namecomp2=$(basename $dir)
    for archdir in $(ls $dir | grep ".archiv$"); do
	namecomp1=$(echo $archdir | cut -d "." -f1)
	case $dir in
	    "$grouparchive")
		mv $dir/$archdir $grouparchive/$namecomp1-$namecomp2-$archdate
	    ;;
	    *)
		mv $dir/$archdir $userarchive/$namecomp1-$namecomp2-$archdate
	    ;;
	esac
	
    done
done

