~vcs-imports/junkcode/main

« back to all changes in this revision

Viewing changes to mybackup.sh

  • Committer: tridge
  • Date: 2007-04-02 07:44:46 UTC
  • Revision ID: vcs-imports@canonical.com-20070402074446-9abd286c24597c27
fix a variable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# a incremental rsync backup script
 
3
 
 
4
 
 
5
# config information
 
6
LOCKFILE=/var/lock/backup.lock
 
7
LOGFILE=/var/log/backup.log
 
8
EXCLUDE_FILE=/etc/backup_excludes
 
9
NUM_INCREMENTAL=3
 
10
BACKUP_DIR=/backup
 
11
RSYNC_OPTS="--bwlimit=500 --exclude-from=$EXCLUDE_FILE --ignore-errors --delete --delete-excluded -axv --backup --timeout=3600"
 
12
 
 
13
 
 
14
 
 
15
##################################
 
16
# support functions
 
17
 
 
18
 
 
19
##################################
 
20
# backup one directory
 
21
backup_one() {
 
22
    path="$1"
 
23
    name="$2"
 
24
    DAY=`date +%j`
 
25
    DAY=`expr $DAY % $NUM_INCREMENTAL`
 
26
    IDIR=$BACKUP_DIR/incremental/$name/$DAY
 
27
 
 
28
    rm -rf $IDIR
 
29
    mkdir -p $IDIR
 
30
 
 
31
    mkdir -p $BACKUP_DIR/$name
 
32
    date
 
33
    echo Backing up $name to $path and $IDIR
 
34
    rsync $RSYNC_OPTS --backup-dir=$IDIR $path $BACKUP_DIR/$name/
 
35
}
 
36
 
 
37
 
 
38
############################
 
39
# grab a lock file. Not atomic, but close :)
 
40
# tries to cope with NFS
 
41
lock_file() {
 
42
        lck="$1"
 
43
        machine=`cat "$lck" 2> /dev/null | cut -d: -f1`
 
44
        pid=`cat "$lck" 2> /dev/null | cut -d: -f2`
 
45
 
 
46
        if [ -f "$lck" ] && 
 
47
            ( [ $machine != $host ] || kill -0 $pid ) 2> /dev/null; then
 
48
                echo "lock file $lck is valid for $machine:$pid"
 
49
                return 1
 
50
        fi
 
51
        /bin/rm -f "$lck"
 
52
        echo "$host:$$" > "$lck"
 
53
        return 0
 
54
}
 
55
 
 
56
############################
 
57
# unlock a lock file
 
58
unlock_file() {
 
59
        lck="$1"
 
60
        /bin/rm -f "$lck"
 
61
}
 
62
 
 
63
 
 
64
 
 
65
 
 
66
(
 
67
  if ! lock_file $LOCKFILE; then
 
68
    exit 1
 
69
  fi
 
70
 
 
71
  trap "unlock_file $LOCKFILE" EXIT
 
72
 
 
73
  ########################
 
74
  # list of backups to perform
 
75
  backup_one / root
 
76
  backup_one /home/ home
 
77
 
 
78
  unlock_file backup.lock
 
79
 
 
80
) >> $LOGFILE 2>&1
 
81