aboutsummaryrefslogtreecommitdiff
path: root/app/backup/backupninja
diff options
context:
space:
mode:
authorrhatto <rhatto@370017ae-e619-0410-ac65-c121f96126d4>2007-11-30 19:01:42 +0000
committerrhatto <rhatto@370017ae-e619-0410-ac65-c121f96126d4>2007-11-30 19:01:42 +0000
commitd02f03087ac844ca179116b97d3a8a68acf9a364 (patch)
treebcf12644cf9428f2f8f5e0510960f3dc550017f9 /app/backup/backupninja
parentbc1eee7a90be2db603115b00c72fc9ea77fbfc5b (diff)
downloadslackbuilds-d02f03087ac844ca179116b97d3a8a68acf9a364.tar.gz
slackbuilds-d02f03087ac844ca179116b97d3a8a68acf9a364.tar.bz2
backupninja: renamed 'rub' handler to 'rsync' and added 'wget' handler
git-svn-id: svn+slack://slack.fluxo.info/var/svn/slackbuilds@1476 370017ae-e619-0410-ac65-c121f96126d4
Diffstat (limited to 'app/backup/backupninja')
-rwxr-xr-xapp/backup/backupninja/backupninja.SlackBuild8
-rw-r--r--app/backup/backupninja/rsync (renamed from app/backup/backupninja/rub)0
-rw-r--r--app/backup/backupninja/wget221
3 files changed, 227 insertions, 2 deletions
diff --git a/app/backup/backupninja/backupninja.SlackBuild b/app/backup/backupninja/backupninja.SlackBuild
index 861b5bcb..2f96756a 100755
--- a/app/backup/backupninja/backupninja.SlackBuild
+++ b/app/backup/backupninja/backupninja.SlackBuild
@@ -28,7 +28,7 @@ fi
PACKAGE="backupninja"
ARCH="noarch"
VERSION=${VERSION:=0.9.4}
-BUILD=${BUILD:=7rha}
+BUILD=${BUILD:=8rha}
SRC_DIR=${SRC:=$CWD}
TMP=${TMP:=/tmp}
REPOS=${REPOS:=$TMP}
@@ -80,7 +80,11 @@ fi
make || exit $ERROR_MAKE
make DESTDIR=$TMP/package-$PACKAGE install || exit $ERROR_INSTALL
-cp $CWD/rub $TMP/package-$PACKAGE/usr/share/$PACKAGE/
+if [ "$VERSION" == "0.9.4" ]; then
+ cp $CWD/rsync $TMP/package-$PACKAGE/usr/share/$PACKAGE/
+ cp $CWD/wget $TMP/package-$PACKAGE/usr/share/$PACKAGE/
+fi
+
rm -rf $TMP/package-$PACKAGE/etc/cron.d
mkdir $TMP/package-$PACKAGE/etc/cron.hourly
cp $CWD/backupninja.cron $TMP/package-$PACKAGE/etc/cron.hourly/backupninja
diff --git a/app/backup/backupninja/rub b/app/backup/backupninja/rsync
index e05b6fd1..e05b6fd1 100644
--- a/app/backup/backupninja/rub
+++ b/app/backup/backupninja/rsync
diff --git a/app/backup/backupninja/wget b/app/backup/backupninja/wget
new file mode 100644
index 00000000..21a1e67a
--- /dev/null
+++ b/app/backup/backupninja/wget
@@ -0,0 +1,221 @@
+#
+# backupninja handler to do incremental backups using
+# wget and hardlinks, based on rsync handler
+#
+# feedback: rhatto at riseup.net | gpl
+# lot of enhancements grabbed from "rsnap" handler by paulv at bikkel.org
+#
+# Config file options
+# -------------------
+#
+# [general]
+# log = wget log file
+# partition = partition where the backup lives
+# fscheck = set to 1 if fsck should run on $partition after the backup is made
+# read_only = set to 1 if $partition is mounted read-only
+# mountpoint = backup partition mountpoint or backup main folder
+# backupdir = folder relative do $mountpoint where the backup should be stored
+# days = number of backup increments (min = 5)
+# lockfile = lockfile to be kept during backup execution
+# nicelevel = wget command nice level
+# enable_mv_timestamp_bug = set to "yes" if your system isnt handling timestamps correctly
+# tmp = temp folder
+#
+# [source]
+# wget = wget program
+# wget_options = wget command options
+# url = remote data url
+# bandwidthlimit = set a badnwidth limit in kbps (remote source only)
+#
+# [destination]
+# folder = local folder
+#
+# You can also specify some system comands if you don't want the default system values:
+#
+# [system]
+# rm = rm command
+# cp = cp command
+# touch = touch command
+# mv = mv command
+# fsck = fsck command
+#
+# TODO: Daily, weekly and monthly snapshot rotation (like the one present on maildir handler).
+#
+
+# config file evaluation
+
+setsection system
+getconf rm rm
+getconf cp cp
+getconf touch touch
+getconf mv mv
+getconf fsck fsck
+
+setsection general
+getconf log /var/log/backup/wget.log
+getconf partition
+getconf fscheck
+getconf read_only
+getconf mountpoint
+getconf backupdir
+getconf rotate
+getconf days
+getconf lockfile
+getconf nicelevel 0
+getconf enable_mv_timestamp_bug no
+getconf tmp /tmp
+
+setsection source
+getconf wget wget
+getconf wget_options
+getconf url
+getconf bandwidthlimit
+
+setsection destination
+getconf folder
+
+# function definitions
+
+function rotate {
+
+ if [[ "$2" < 4 ]]; then
+ error "Rotate: minimum of 4 rotations"
+ exit 1
+ fi
+
+ if [ -d $1.$2 ]; then
+ $nice $mv /$1.$2 /$1.tmp
+ fi
+
+ for ((n=`echo "$2 - 1" | bc`; n >= 0; n--)); do
+ if [ -d $1.$n ]; then
+ dest=`echo "$n + 1" | bc`
+ $nice $mv /$1.$n /$1.$dest
+ $touch /$1.$dest
+ fi
+ done
+
+ if [ -d $1.tmp ]; then
+ $nice $mv /$1.tmp /$1.0
+ fi
+
+ if [ -d $1.1 ]; then
+ $nice $cp -alf /$1.1/. /$1.0
+ fi
+
+}
+
+function move_files {
+
+ ref=$tmp/makesnapshot-mymv-$$;
+ $touch -r $1 $ref;
+ $mv $1 $2;
+ $touch -r $ref $2;
+ $rm $ref;
+
+}
+
+backupdir="$mountpoint/$backupdir"
+
+# does $backupdir exists?
+
+if [ ! -d "$backupdir" ]; then
+ error "Backupdir $backupdir does not exist"
+ exit 1
+fi
+
+# setup number of increments
+
+if [ -z "$days" ]; then
+ keep="4"
+else
+ keep="`echo $days - 1 | bc -l`"
+fi
+
+# lockfile setup
+
+if [ ! -z "$lockfile" ]; then
+ $touch $lockfile || warning "Could not create lockfile $lockfile"
+fi
+
+# nicelevel setup
+
+if [ ! -z "$nicelevel" ]; then
+ nice="nice -n $nicelevel"
+else
+ nice=""
+fi
+
+# set mv procedure
+
+if [ $enable_mv_timestamp_bug == "yes" ]; then
+ mv=move_files
+fi
+
+# set excludes
+
+for path in $exclude; do
+ EXCLUDES="$EXCLUDES --exclude=$path"
+done
+
+echo "Starting backup at `date`" >> $log
+
+# mount backup destination folder as read-write
+
+if [ "$read_only" == "1" ] || [ "$read_only" == "yes" ]; then
+ if [ -d "$mountpoint" ]; then
+ mount -o remount,rw $mountpoint
+ if (($?)); then
+ error "Could not mount $mountpoint"
+ exit 1
+ fi
+ fi
+fi
+
+# the backup procedure
+
+if [ ! -d "$backupdir/$folder/$folder.0" ]; then
+ mkdir -p $backupdir/$folder/$folder.0
+fi
+
+info "Rotating $backupdir/$folder/$folder..."
+echo "Rotating $backupdir/$folder/$folder..." >> $log
+rotate $backupdir/$folder/$folder $keep
+info "Wget'ing $SECTION on $backupdir/$folder/$folder.0..."
+
+if [ ! -z "$badnwidth" ]; then
+ limit_rate="--limit-rate=$badnwidth""k"
+fi
+
+cd $backupdir/$folder/$folder.0
+wget $wget_options $limit-rate -r -c -N -e robots=off $url
+cd -
+
+$touch $backupdir/$folder/$folder.0
+
+# remount backup destination as read-only
+
+if [ "$read_only" == "1" ] || [ "$read_only" == "yes" ]; then
+ mount -o remount,ro $mountpoint
+fi
+
+# check partition for errors
+
+if [ "$fscheck" == "1" ] || [ "$fscheck" == "yes" ]; then
+ umount $mountpoint
+ if (($?)); then
+ warning "Could not umount $mountpoint to run fsck"
+ else
+ $nice $fsck -v -y $partition >> $log
+ mount $mountpoint
+ fi
+fi
+
+# removes the lockfile
+
+if [ ! -z "$lockfile" ]; then
+ $rm $lockfile || warning "Could not remove lockfile $lockfile"
+fi
+
+echo "Finnishing backup at `date`" >> $log
+