#!/bin/bash echo "Backup Script by dodger!" # This var contains the destination dir where all will be stored! # be sure to has full access to this dir! DESTINATION="/home/backup/files/" # Escluded files #EXCLUDEFILES=".[Bb][aA][kK] [cC]ache tmp" EXCLUDEFILES=".[Bb][aA][kK] tmp" EXCLUDEFILE="/tmp/excludefile.tmp" # date SHOT! MYDATE=`date +%Y%m%d` SERVERNAME=`uname -a | awk '{ print $2 }'` BACKUPFILE=$DESTINATION"/"$SERVERNAME"_"$MYDATE".tar.gz" LOGFILE=$DESTINATION"/"$SERVERNAME"_"$MYDATE".log" EXCLUDED=$DESTINATION"/"$SERVERNAME"_"$MYDATE".excluded" # this var contains all the desired backed-up dirs all in 1 line separated by spaces # example: "/etc /home /my/preferred/dir" BACKUPDIRS="$(dirname $0)/$(basename $0 .sh).dirs" # chown and chmod permission for files CHOWN="root:admins" CHMOD="440" rm -f $EXCLUDEFILE 2>> $LOGFILE for i in $(cat $BACKUPDIRS) do echo $i for j in $EXCLUDEFILES do find $i -name "*$j*" >> $EXCLUDEFILE done done echo "Backing up your selected dirs ($BACKUPDIRS), this will take a while" echo "file will be: $BACKUPFILE" echo "log will be: $LOGFILE" echo "Taring" for i in $(cat $BACKUPDIRS) do if [[ "$AUXDIR" ]] then AUXDIR="$AUXDIR $i" else AUXDIR="$i" fi done echo $AUXDIR nice --adjustment=19 tar czfv "$BACKUPFILE" --exclude-from=$EXCLUDEFILE $AUXDIR > "$LOGFILE" 2>> $EXCLUDED cat $EXCLUDEFILE >> $EXCLUDED rm -f $EXCLUDEFILE 2>> $LOGFILE find $DESTINATION -type f -exec chmod $CHMOD {} \; find $DESTINATION -type f -exec chown $CHOWN {} \; echo "Ok, all done, you can read the log file in:" echo " ->$LOGFILE"