tar: Support running on multiple backends.
[matthijs/upstream/backupninja.git] / handlers / tar.in
1 # -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
2 # vim: set filetype=sh sw=3 sts=3 expandtab autoindent:
3 #
4 # tar handler script for backupninja
5
6 getconf compress        bzip
7 getconf includes        "/etc /home /usr/local"
8 getconf excludes        "/tmp /proc /dev /sys /net /misc /media /srv /selinux"
9
10 getconf TAR             `which tar`
11 getconf EXTENSION       tar
12 getconf DATE            `which date`
13 getconf DATEFORMAT      "%Y.%m.%d-%H%M"
14
15 # See if vservers are configured
16 if [ "$vservers" = "yes" ]
17 then
18    warning "vservers enabled, but tar does not support it!"
19 fi
20
21 function make_backup () {
22    getconf backupdir       /var/backups/`hostname --fqdn`
23    backupdir=`interpolate "$backupdir"`
24    getconf backupname      `hostname --fqdn`
25    backupname=`interpolate "$backupname"`
26
27    if [ ! -d "$backupdir" ]
28    then
29       mkdir -p "$backupdir" || fatal "Can not make directory $backupdir"
30    fi
31
32    if [ ! -w "$backupdir" ]
33    then
34       fatal "Directory $backupdir is not writable"
35    fi
36
37    ## DO IT #################################################
38    #
39    # here we grab a list of the packages installed and removed.
40    #
41
42    case $compress in
43       "compress")
44          compress_option="-Z"
45          EXTENSION="tar.compress"
46          ;;
47       "gzip")
48          compress_option="-z"
49          EXTENSION="tgz"
50          ;;
51       "bzip")
52          compress_option="-j"
53          EXTENSION="tar.bz2"
54          ;;
55       "none")
56          compress_option=""
57          ;;
58       *)
59          warning "Unknown compress filter ($tar_compress)"
60          compress_option=""
61          EXTENSION="tgz"
62          ;;
63    esac
64
65    exclude_options=""
66    for i in $excludes
67    do
68       exclude_options="$exclude_options --exclude $root$i"
69    done
70
71    include_options=""
72    for i in $includes
73    do
74       include_options="$include_options $root$i"
75    done
76
77    debug "Running backup: " $TAR -c -p -v $compress_option $exclude_options \
78       -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
79       $include_options
80
81    $TAR -c -p -v $compress_option $exclude_options \
82       -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
83       $include_options \
84       > "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.list \
85       2> "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.err
86
87    [ $? -ne 0 ] && fatal "Tar backup failed"
88
89 }
90
91 init_source_hosts
92 run_for_source_hosts make_backup