diff -r a093bec1f362 -r d23b56d19488 backup2Archiv2 --- 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 # License: GPLv3 + 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