backup2Archiv2
changeset 4 d23b56d19488
parent 1 cd277b242dca
child 5 56075cc933bb
--- 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