--- /dev/null
+Here is how to use these backup scripts:
+
+1. Create a separate backup partition big enough to hold all the filesystems you want to backup + any changes. Preferably, get a big inexpensive ide drive, and dedicate it as a backup drive.
+
+2. Create the mount point for the partition as /backup (otherwise, modify the config parameters at the top of the scripts).
+
+3. Mount the partition read-write, cd into /backup, and extract the backupskel.tar.gz there. This will create the directory structure needed by the scripts.
+
+4. Set the partition to be mounted as read-only in your /etc/fstab. This will protect your precious backup from software crashes.
+
+5. Copy the backup scripts "backup" and "backup_rotate" to a suitable directory in cron's path; "/usr/bin" is a good location. alternatively, you can place them anywhere, and modify the crontab entries to match, or run it manually.
+
+6. Modify your /etc/crontab file to add these entries, and be sure to modify the times to suit your preferences, and the performance of your machine:
+
+----------%<---------------------------------%<--------------------------------
+
+# Perform Nightly Backup (nightly incremental + weekly full + monthly full)
+02 06 * * 1-6 root backup_rotate ; nice -1 backup inc
+02 06 * * sun root backup_rotate ; nice -1 backup full
+07 00 01 * * root backup_rotate monthly ; backup full nodumpdate
+
+----------%<---------------------------------%<--------------------------------
+
+Any questions? Send me and email to getnito@yahoo.com.
+
+And that is it. Have fun!
+
+--
+nito
+
+getnito@yahoo.com
--- /dev/null
+#!/bin/bash
+#
+# This script will make a simple backup of the most critical partitions,
+# using the "dump" facility, into the backup partition. It will stop the
+# webserver, and recurse the sites directories making a tar mini-backup of
+# the database dirs. It will the restart the webserver, and start the
+# "dump" backup.
+#
+
+if [ "$2" = "nodumpdate" ]; then
+ UPDATEDDATE=""
+else
+ UPDATEDDATE="-u"
+fi
+
+if [ "$1" = "full" ]; then
+ DLEVEL="0"
+ BTYPE="full"
+elif [ "$1" = "inc" ]; then
+ DLEVEL="1"
+ BTYPE="inc"
+else
+ echo "Usage: $0 full|inc [nodumpdate]"
+ exit 1
+fi
+
+
+#
+# Configuration Parameters
+#
+
+BACKUPPART="/backup"
+BACKUPDIR="current"
+DUMPLOGARCH="$BACKUPPART/backup.dump.log.gz"
+FSTODUMP="/ /var /home /mnt/hdb1 /usr"
+DUMPFILESMODE="0644"
+DUMPFILESOWN="root.root"
+
+#
+# Start
+#
+
+echo
+echo "#####################################################################"
+echo "Starting backup."
+echo "#####################################################################"
+echo
+
+
+#
+# Make full system backup
+#
+
+echo "Phase 1: ### Full System Dump Backup ###"
+echo "Phase 1: Using backup partition: $BACKUPPART"
+echo "Phase 1: Filesystems to dump: $FSTODUMP"
+
+echo -n "Phase 1: Remounting backup partition read-write ... "
+if ( mount $BACKUPPART -o remount,rw &> /dev/null ) then
+ echo "done."
+else
+ echo "failure!"
+ echo "Phase 1: There were problems remounting $BACKUPPART in read-write mode!"
+ echo "Phase 1: Aborting Full System Dump Backup."
+ echo "Phase 1: Aborted, done."
+ echo "-------------------------------------------------------------------------------"
+ exit 1
+fi
+
+echo -n "Phase 1: Checking backup partition for correct dir structure ... "
+if [ -d $BACKUPPART/$BACKUPDIR -a -w $BACKUPPART/$BACKUPDIR ]; then
+ echo "done."
+
+ echo -n "Phase 1: Checking backup partition for available space ... "
+ SREQ=`for i in $FSTODUMP;do dump -$DLEVEL -S $i 2> /dev/null;done|awk '{x=x+$1/1048576} END {printf "%6.0f\n", x}'`
+ SAVAILFREE=`df --block-size=1048576 |grep -Ew $BACKUPPART|awk '{printf "%6.0f\n", $4}'`
+ SAVAILDEL=`du -s --block-size=1048576 $BACKUPPART/$BACKUPDIR/. |awk '{printf "%6.0f\n", $1}'`
+ SAVAIL=`expr $SAVAILFREE + $SAVAILDEL`
+
+ if [ `expr $SAVAIL - $SREQ` -gt "0" ]; then
+ echo "done."
+ echo "Phase 1: Available: $SAVAIL MB Required: $SREQ MB."
+ else
+ echo "no enough space!"
+ echo "Phase 1: There is not enough space left in $BACKUPPART for the backup!"
+ echo "Phase 1: Available: $SAVAIL MB Required: $SREQ MB."
+ echo -n "Phase 1: Remounting backup partition read-only ... "
+ if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
+ echo "done."
+ else
+ echo "failure!"
+ echo "Phase 1: There were problems remounting $BACKUPPART in read-only mode!"
+ echo "Phase 1: Aborting Full System Dump Backup."
+ echo "Phase 1: Aborted, done."
+ echo "-------------------------------------------------------------------------------"
+ exit 1
+ fi
+ echo "Phase 1: Aborting Full System Dump Backup."
+ echo "Phase 1: Aborted, done."
+ echo "-------------------------------------------------------------------------------"
+ exit 1
+ fi
+
+ echo -n "Phase 1: Deleting old files ... "
+ if [ `ls -la $BACKUPPART/$BACKUPDIR/|wc -l` -gt "3" ]; then
+ rm -f $BACKUPPART/$BACKUPDIR/* &> /dev/null
+ echo "done."
+ else
+ echo "no old files to delete."
+ fi
+
+ echo "Phase 1: Dumping filesystems ... "
+ for FS in $FSTODUMP
+ do
+ if [ "$FS" = "/" ]; then
+ FSNAME="root"
+ else
+ FSNAME=`echo $FS|tr / _|cut -b 2-`
+ fi
+ sync
+ echo -n "Phase 1: Starting dump of $FSNAME ( $FS ) ... "
+ if ( dump -$DLEVEL $UPDATEDDATE -z -M -s 27306 -f $BACKUPPART/$BACKUPDIR/$FSNAME.$BTYPE. $FS &> $BACKUPPART/$BACKUPDIR/$FSNAME.log ) then
+ echo "done."
+ else
+ echo "problems!"
+ echo "Phase 1: There where problems with the dump of $FSNAME ( $FS )."
+ echo "Phase 1: Check logfile $BACKUPPART/$BACKUPDIR/$FSNAME.log for more info"
+ echo "Phase 1: Also check log archive file $DUMPLOGARCH."
+ fi
+ cat $BACKUPPART/$BACKUPDIR/$FSNAME.log |gzip >> $DUMPLOGARCH
+ echo "-------------------------------------------------------------------------------" |gzip >> $DUMPLOGARCH
+ done
+
+ echo -n "Phase 1: Setting ownership and permissions of dump files ... "
+ chmod $DUMPFILESMODE $BACKUPPART/$BACKUPDIR/* $DUMPLOGARCH &> /dev/null
+ chown $DUMPFILESOWN $BACKUPPART/$BACKUPDIR/* $DUMPLOGARCH &> /dev/null
+ echo "done."
+
+ echo -n "Phase 1: Compressing dump log files ... "
+ gzip $BACKUPPART/$BACKUPDIR/*.log &> /dev/null
+ echo "done."
+ sync
+
+else
+ echo "problems!"
+ echo "Phase 1: There are problems with the directory structure."
+ echo "Phase 1: Check dirs: $BACKUPPART/$BACKUPDIR"
+ echo -n "Phase 1: Remounting backup partition read-only ... "
+ if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
+ echo "done."
+ else
+ echo "failure!"
+ echo "Phase 1: There were problems remounting $BACKUPPART in read-only mode!"
+ echo "Phase 1: Aborting Full System Dump Backup."
+ echo "Phase 1: Aborted, done."
+ echo "-------------------------------------------------------------------------------"
+ exit 1
+ fi
+ echo "Phase 1: Aborting Full System Dump Backup."
+ echo "Phase 1: Aborted, done."
+ echo "-------------------------------------------------------------------------------"
+ exit 1
+fi
+
+echo -n "Phase 1: Remounting backup partition read-only ... "
+if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
+ echo "done."
+else
+ echo "failure!"
+ echo "Phase 1: There were problems remounting $BACKUPPART in read-only mode!"
+ echo "Phase 1: Aborting Full System Dump Backup."
+ echo "Phase 1: Aborted, done."
+ echo "-------------------------------------------------------------------------------"
+ exit 1
+fi
+
+echo "Phase 1: End of Full System Dump Backup."
+echo "Phase 1: Done."
+echo "-------------------------------------------------------------------------------"
--- /dev/null
+#!/bin/bash
+#
+# This script will redirect the backup directory to implement desired backup
+# schedules.
+#
+# Currently we will use just a seven day format were we just move a link
+# that represents the backup directory, to point to the day of the week.
+#
+
+#
+# Configuration Parameters
+#
+
+if [ "$1" = "monthly" ]; then
+ REALDIR="monthly"
+else
+ REALDIR=`date +%A`
+fi
+
+BACKUPPART="/backup"
+BACKUPDIR="current"
+
+echo "### Start of Backup Rotation ###"
+echo "Using backup partition: $BACKUPPART"
+
+echo -n "Remounting backup partition read-write ... "
+if ( mount $BACKUPPART -o remount,rw &> /dev/null ) then
+ echo "done."
+else
+ echo "failure!"
+ echo " There were problems remounting $BACKUPPART in read-write mode!"
+ echo "Rotation not made!"
+ echo "### End of Backup Rotation ###"
+ exit 1
+fi
+
+echo -n "Checking that no directory named \"$BACKUPDIR\" exists ... "
+if [ -d $BACKUPPART/$BACKUPDIR -a ! -L $BACKUPPART/$BACKUPDIR ]; then
+ echo "failure!"
+ echo " Directory \"$BACKUPDIR\" exists. Can't create link!"
+ echo "Rotation not made!"
+
+ echo -n "Remounting backup partition read-only ... "
+ if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
+ echo "done."
+ else
+ echo "failure!"
+ echo " There were problems remounting $BACKUPPART in read-only mode!"
+ echo "### End of Backup Rotation ###"
+ exit 1
+ fi
+ echo "### End of Backup Rotation ###"
+ exit 1
+else
+ echo "done."
+fi
+
+cd $BACKUPPART
+
+echo -n "Creating link: $BACKUPDIR --> $REALDIR ... "
+if ( ln -snf $REALDIR $BACKUPDIR &> /dev/null ) then
+ echo "done."
+else
+ echo "failure!"
+ echo " There were problems creating link!"
+ echo "Rotation not made!"
+
+ echo -n "Remounting backup partition read-only ... "
+ if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
+ echo "done."
+ else
+ echo "failure!"
+ echo " There were problems remounting $BACKUPPART in read-only mode!"
+ echo "### End of Backup Rotation ###"
+ exit 1
+ fi
+ echo "### End of Backup Rotation ###"
+ exit 1
+fi
+
+echo -n "Remounting backup partition read-only ... "
+if ( mount $BACKUPPART -o remount,ro &> /dev/null ) then
+ echo "done."
+else
+ echo "failure!"
+ echo " There were problems remounting $BACKUPPART in read-only mode!"
+ echo "### End of Backup Rotation ###"
+ exit 1
+fi
+echo "### End of Backup Rotation ###"