--- a/backup2Archiv2 Wed May 04 11:32:05 2016 +0200
+++ b/backup2Archiv2 Fri May 06 11:13:14 2016 +0200
@@ -4,91 +4,96 @@
# Company: schlittermann internet & unix support <http://schlittermann.de>
# License: GPLv3 <http://www.gnu.org/licenses/gpl-3.0.html>
+
set -e
LC_ALL=POSIX
-BACKUPDIR=/home/samba/Archiv2
+# THESE VARS MUST BE SET
+BACKUPDIR=/home/samba/Archiv2/_kundenarchiv
LOGFILE=/var/log/backup2Archiv-$(date -I)
-LOGTAG=B2Archiv2
-GROUP='Domain Users'
+LOGTAG=b2archiv2
+USER=
+GROUP=
if [ $# == 0 ]; then
cat <<_
Usage: $0 /path/to/backup...
+
+Backupdir is actual "$BACKUPDIR"
+
_
exit 1
fi
-echo "BACKUP $(date)" >> "$LOGFILE"
logger -t "$LOGTAG" "STARTING $0 $@"
+logger -t "$LOGTAG" "setting umask"
-# vielleicht lieber die Variable testen
+umask 077
+echo "BACKUP $(date)" >> "$LOGFILE"
+
if [ -z "$BACKUPDIR" ]; then
- logger "$BACKUPDIR variable is empty!"
+ logger -t $LOGTAG "$BACKUPDIR variable is empty!"
exit 1
fi
-# FIXME: Quoten!
+test -d "$BACKUPDIR" || mkdir "$BACKUPDIR"
-if [ ! -d $BACKUPDIR ]; then
- logger "$BACKUPDIR does not exist"
- exit 1
-fi
-if [ ! -w $BACKUPDIR ]; then
- logger -t $LOGTAG "$BACKUPDIR is not writeable"
- exit 1
-fi
-umask 077
-
-while (( "$#" )); do
+while (( $# )); do
PATH2BACKUP="$1"
- # tar wird doch auch feststellen, dass was fehlt
- #if [ ! -e "$PATH2BACKUP" ]; then
- # logger "$1 does not exist"
- # exit 1
- #fi
+ PARENTDIR="${PATH2BACKUP%/*}"
NAME=$(basename "$PATH2BACKUP")
ARCHIV="$BACKUPDIR/$NAME.tar.xz"
- ACLFILE="$PATH2BACKUP/$NAME.acls"
- ATTRFILE="$PATH2BACKUP/$NAME.attr"
+ ACLFILE="$PATH2BACKUP/.$NAME.acls"
+ ATTRFILE="$PATH2BACKUP/.$NAME.attr"
- getfacl --recursive \
- --logical \
- --all-effective \
- $PATH2BACKUP >> $ACLFILE 2>$LOGFILE
- #$PATH2BACKUP >> $ACLFILE 2>&1
+ echo "####PATH2BACKUP = $PATH2BACKUP#####" >> $LOGFILE
+ echo "SEARCHING BROKEN SYMLINKS" | tee -a "$LOGFILE" | logger -t "$LOGTAG"
+ find -L "$PATH2BACKUP" -exec test ! -e {} \; -printf "%p -> %l\n" \
+ >> "$LOGFILE"
+ echo "DELETING BROKEN SYMLINKS" | tee -a "$LOGFILE" | logger -t "$LOGTAG"
+ find -L "$PATH2BACKUP" -exec test ! -e {} \; -delete
- #find -L $PATH2BACKUP -type d -print0 |\
- # xargs -0r lsattr >> $ATTRFILE 2>$LOGFILE
- find -L $PATH2BACKUP -type f -print0 |\
- xargs -0r lsattr >> $ATTRFILE 2>$LOGFILE
+ getfacl --logical --recursiv --all-effective "$PATH2BACKUP" >> "$ACLFILE" 2>"$LOGFILE"
+ lsattr $PATH3BACKUP >> $ATTRFILE 2>$LOGFILE
+
if [ -e "$ARCHIV" ]; then
ARCHIVNEW="$BACKUPDIR/$NAME.$(date -I).tar.xz"
logger -t $LOGTAG "$ARCHIV exists - renaming $ARCHIV to $ARCHIVNEW"
ARCHIV="$ARCHIVNEW"
fi
-
+
tar --create \
- --dereference \
- --preserve-permissions \
--acls \
- --check-links \
--xattrs \
- --verbose \
--totals \
+ --verbose \
+ --dereference \
+ --check-links \
--auto-compress \
+ --preserve-permissions \
+ --directory "$PARENTDIR" \
--file "$ARCHIV" \
- $PATH2BACKUP $ACLFILE\
- >> $LOGFILE 2>&1
-
- logger -t $LOGTAG "BACKUP $0 $PATH2BACKUP done to $ARCHIV"
+ "$NAME" \
+ >> "$LOGFILE" 2>&1
- rm $ACLFILE $ATTRFILE
+ if [ $? != 0 ];then
+ logger -t"$LOGTAG" "Archiving of $PATH2BACKUP failed"
+ rm "$ACLFILE" "$ATTRFILE"
+ else
+ logger -t "$LOGTAG" "Backup $0 $PATH2BACKUP done to $ARCHIV"
+ logger -t "$LOGTAG" "changing permissions of $ARCHIV"
+ chown "$USER":"$GROUPi" "$ARCHIV"
+
+ #wirft noch nen Fehler :(
+ #logger -t "$LOGTAG" "Removing $PATH2BACKUP"
+ #rm -r "$PATH2BACKUP"
+ rm "$ACLFILE" "$ATTRFILE"
+ fi
shift
done