backup2Archiv2
changeset 4 d23b56d19488
parent 1 cd277b242dca
child 5 56075cc933bb
equal deleted inserted replaced
3:a093bec1f362 4:d23b56d19488
     2 
     2 
     3 # Author: Heike Yvonne Pesch <pesch@schlittermann.de>
     3 # Author: Heike Yvonne Pesch <pesch@schlittermann.de>
     4 # Company: schlittermann internet & unix support <http://schlittermann.de>
     4 # Company: schlittermann internet & unix support <http://schlittermann.de>
     5 # License: GPLv3 <http://www.gnu.org/licenses/gpl-3.0.html>
     5 # License: GPLv3 <http://www.gnu.org/licenses/gpl-3.0.html>
     6 
     6 
       
     7 
     7 set -e
     8 set -e
     8 LC_ALL=POSIX
     9 LC_ALL=POSIX
     9 
    10 
    10 BACKUPDIR=/home/samba/Archiv2
    11 # THESE VARS MUST BE SET
       
    12 BACKUPDIR=/home/samba/Archiv2/_kundenarchiv
    11 LOGFILE=/var/log/backup2Archiv-$(date -I)
    13 LOGFILE=/var/log/backup2Archiv-$(date -I)
    12 LOGTAG=B2Archiv2
    14 LOGTAG=b2archiv2
    13 GROUP='Domain Users'
    15 USER=
       
    16 GROUP=
    14 
    17 
    15 if [ $# == 0 ]; then
    18 if [ $# == 0 ]; then
    16   cat <<_
    19   cat <<_
    17 Usage: $0 /path/to/backup...
    20 Usage: $0 /path/to/backup...
       
    21 
       
    22 Backupdir is actual "$BACKUPDIR"
       
    23 
    18 _
    24 _
    19   exit 1
    25   exit 1
    20 fi
    26 fi
    21 
    27 
       
    28 
       
    29 logger -t "$LOGTAG" "STARTING $0 $@"
       
    30 logger -t "$LOGTAG" "setting umask"
       
    31 
       
    32 umask 077
    22 echo "BACKUP $(date)" >> "$LOGFILE"
    33 echo "BACKUP $(date)" >> "$LOGFILE"
    23 
    34 
    24 logger -t "$LOGTAG" "STARTING $0 $@"
       
    25 
       
    26 # vielleicht lieber die Variable testen
       
    27 if [ -z "$BACKUPDIR" ]; then
    35 if [ -z "$BACKUPDIR" ]; then
    28     logger "$BACKUPDIR variable is empty!"
    36     logger -t $LOGTAG "$BACKUPDIR variable is empty!"
    29     exit 1
    37     exit 1
    30 fi
    38 fi
    31 
    39 
    32 # FIXME: Quoten!
    40 test -d "$BACKUPDIR" || mkdir "$BACKUPDIR"
    33 
    41 
    34 if [ ! -d $BACKUPDIR ]; then
       
    35   logger "$BACKUPDIR does not exist"
       
    36   exit 1
       
    37 fi
       
    38 if [ ! -w $BACKUPDIR ]; then
       
    39   logger -t $LOGTAG "$BACKUPDIR is not writeable"
       
    40   exit 1
       
    41 fi
       
    42 
    42 
    43 umask 077
    43 while (( $# )); do
    44 
       
    45 while (( "$#" )); do
       
    46 
    44 
    47   PATH2BACKUP="$1"
    45   PATH2BACKUP="$1"
    48   # tar wird doch auch feststellen, dass was fehlt
       
    49   #if [ ! -e "$PATH2BACKUP" ]; then
       
    50   #  logger "$1 does not exist"
       
    51   #  exit 1
       
    52   #fi
       
    53 
    46 
       
    47   PARENTDIR="${PATH2BACKUP%/*}"
    54   NAME=$(basename "$PATH2BACKUP")
    48   NAME=$(basename "$PATH2BACKUP")
    55   ARCHIV="$BACKUPDIR/$NAME.tar.xz"
    49   ARCHIV="$BACKUPDIR/$NAME.tar.xz"
    56   ACLFILE="$PATH2BACKUP/$NAME.acls"
    50   ACLFILE="$PATH2BACKUP/.$NAME.acls"
    57   ATTRFILE="$PATH2BACKUP/$NAME.attr"
    51   ATTRFILE="$PATH2BACKUP/.$NAME.attr"
    58 
    52 
    59   getfacl --recursive \
    53  echo "####PATH2BACKUP = $PATH2BACKUP#####" >> $LOGFILE
    60           --logical \
    54  echo "SEARCHING BROKEN SYMLINKS" | tee -a "$LOGFILE"  | logger -t "$LOGTAG"
    61           --all-effective \
    55  find -L "$PATH2BACKUP" -exec test ! -e {} \; -printf "%p -> %l\n" \
    62           $PATH2BACKUP >> $ACLFILE 2>$LOGFILE
    56   >> "$LOGFILE"
    63           #$PATH2BACKUP >> $ACLFILE 2>&1
    57  echo "DELETING BROKEN SYMLINKS" | tee -a "$LOGFILE"  | logger -t "$LOGTAG"
       
    58  find -L "$PATH2BACKUP" -exec test ! -e {} \; -delete
    64 
    59 
    65   #find -L $PATH2BACKUP -type d -print0 |\
    60  getfacl --logical --recursiv --all-effective "$PATH2BACKUP" >>  "$ACLFILE" 2>"$LOGFILE"
    66   #  xargs -0r lsattr >> $ATTRFILE 2>$LOGFILE
    61  lsattr $PATH3BACKUP >> $ATTRFILE 2>$LOGFILE
    67   find -L $PATH2BACKUP -type f -print0 |\
    62 
    68     xargs -0r lsattr >> $ATTRFILE 2>$LOGFILE
       
    69 
    63 
    70   if [ -e "$ARCHIV" ]; then
    64   if [ -e "$ARCHIV" ]; then
    71     ARCHIVNEW="$BACKUPDIR/$NAME.$(date -I).tar.xz"
    65     ARCHIVNEW="$BACKUPDIR/$NAME.$(date -I).tar.xz"
    72     logger -t $LOGTAG "$ARCHIV exists - renaming $ARCHIV to $ARCHIVNEW"
    66     logger -t $LOGTAG "$ARCHIV exists - renaming $ARCHIV to $ARCHIVNEW"
    73     ARCHIV="$ARCHIVNEW"
    67     ARCHIV="$ARCHIVNEW"
    74   fi
    68   fi
    75   
    69 
    76   tar --create \
    70   tar --create \
       
    71       --acls \
       
    72       --xattrs \
       
    73       --totals \
       
    74       --verbose \
    77       --dereference \
    75       --dereference \
       
    76       --check-links \
       
    77       --auto-compress \
    78       --preserve-permissions \
    78       --preserve-permissions \
    79       --acls \
    79       --directory "$PARENTDIR" \
    80       --check-links \
       
    81       --xattrs \
       
    82       --verbose \
       
    83       --totals \
       
    84       --auto-compress \
       
    85       --file "$ARCHIV" \
    80       --file "$ARCHIV" \
    86       $PATH2BACKUP $ACLFILE\
    81       "$NAME" \
    87       >> $LOGFILE 2>&1 
    82       >> "$LOGFILE" 2>&1 
    88       
       
    89   logger -t $LOGTAG "BACKUP $0 $PATH2BACKUP done to $ARCHIV"
       
    90 
    83 
    91   rm $ACLFILE $ATTRFILE
    84   if [ $? != 0 ];then
       
    85     logger -t"$LOGTAG" "Archiving of $PATH2BACKUP failed"
       
    86     rm "$ACLFILE" "$ATTRFILE"
       
    87   else 
       
    88     logger -t "$LOGTAG" "Backup $0 $PATH2BACKUP done to $ARCHIV"
       
    89     logger -t "$LOGTAG" "changing permissions of $ARCHIV"
       
    90     chown "$USER":"$GROUPi" "$ARCHIV"
       
    91     
       
    92     #wirft noch nen Fehler :(
       
    93     #logger -t "$LOGTAG" "Removing $PATH2BACKUP"
       
    94     #rm -r "$PATH2BACKUP"
       
    95     rm "$ACLFILE" "$ATTRFILE"
       
    96   fi
    92 
    97 
    93   shift
    98   shift
    94 done
    99 done
    95 
   100 
    96 logger -t $LOGTAG "END $0"
   101 logger -t $LOGTAG "END $0"