backup2Archiv2
changeset 0 71a3a2a6663d
child 1 cd277b242dca
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/backup2Archiv2	Tue May 03 14:39:45 2016 +0200
@@ -0,0 +1,91 @@
+#! /bin/bash
+
+# Author: Heike Yvonne Pesch <pesch@schlittermann.de>
+# Company: schlittermann internet & unix support <http://schlittermann.de>
+# License: GPLv3 <http://www.gnu.org/licenses/gpl-3.0.html>
+
+BACKUPDIR="/home/samba/Archiv2"
+LOGFILE="/var/log/backup2Archiv-$(date -I)"
+LOGTAG="B2Archiv2"
+GROUP="Domain Users"
+
+if [ "$#" == "0" ]; then
+  echo "USAGE: $0 /path/to/backup"
+  echo;echo;
+  echo "NOTICE: It is best to do the backup from the parent dir of path"
+  echo "        to backup"
+  exit 1
+fi
+
+if [ ! -e $LOGFILE ];then
+  touch $LOGFILE
+fi
+echo "BACKUP $(date)" >> $LOGFILE
+
+logger -t $LOGTAG "STARTING $0 $@"
+
+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
+
+while (( "$#" )); do
+  if [ ! -e "$1" ]; then
+    logger "$1 does not exist"
+    exit 1
+  fi
+
+  PATH2BACKUP="$1"
+  SUBSTR=`expr match "$PATH2BACKUP" '\/*.*\/'`
+  NAME=${PATH2BACKUP:SUBSTR}
+  ARCHIV="$BACKUPDIR/$NAME.tar.xz"
+  ACLFILE="$PATH2BACKUP/$NAME.acls.txt"
+  ATTRFILE="$PATH2BACKUP/$NAME.attr.txt"
+
+  touch $ACLFILE && chmod go-rwx $ACLFILE
+  touch $ATTRFILE && chmod go-rwx $ATTRFILE
+  
+
+  getfacl --recursive \
+          --logical \
+          --all-effective \
+          $PATH2BACKUP >> $ACLFILE 2>$LOGFILE
+          #$PATH2BACKUP >> $ACLFILE 2>&1
+
+  #find -L $PATH2BACKUP -type d -print0 |\
+  #  xargs -0r lsattr >> $ATTRFILE 2>$LOGFILE
+  find -L $PATH2BACKUP -type f -print0 |\
+    xargs -0r lsattr >> $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 \
+      --auto-compress \
+      --file "$ARCHIV" \
+      $PATH2BACKUP $ACLFILE\
+      >> $LOGFILE 2>&1 
+      
+  logger -t $LOGTAG "BACKUP $0 $PATH2BACKUP done to $ARCHIV"
+
+  rm $ACLFILE $ATTRFILE
+
+  shift
+done
+
+logger -t $LOGTAG "END $0"
+exit 0;