diff options
author | rhatto <rhatto@370017ae-e619-0410-ac65-c121f96126d4> | 2007-11-30 19:01:42 +0000 |
---|---|---|
committer | rhatto <rhatto@370017ae-e619-0410-ac65-c121f96126d4> | 2007-11-30 19:01:42 +0000 |
commit | d02f03087ac844ca179116b97d3a8a68acf9a364 (patch) | |
tree | bcf12644cf9428f2f8f5e0510960f3dc550017f9 /app/backup/backupninja | |
parent | bc1eee7a90be2db603115b00c72fc9ea77fbfc5b (diff) | |
download | slackbuilds-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-x | app/backup/backupninja/backupninja.SlackBuild | 8 | ||||
-rw-r--r-- | app/backup/backupninja/rsync (renamed from app/backup/backupninja/rub) | 0 | ||||
-rw-r--r-- | app/backup/backupninja/wget | 221 |
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 + |