summaryrefslogtreecommitdiff
path: root/scripts/dump-tool
blob: 249b17a0fdaa3b00d89fe6af3e90accee8a0b4ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash

LEVEL='0'
PROG_NAME="$(basename $0)"
XFSDUMP='/usr/bin/xfsdump'
DESTINATION="/backup"
SESSION_LABEL="weekly"
MEDIA_LABEL="root-fs"
FILESYSTEM="/"

usage() {
    printf "Usage: %s (--weekly | --daily | --hourly) [--file-system=fs] [--help]\n" $PROG_NAME > /dev/stderr
}

while [[ $# -gt 0 ]]; do
    case $1 in
        --weekly)
            LEVEL='0'
            SESSION_LABEL="weekly"
            ;;
        --daily)
            LEVEL='1'
            SESSION_LABEL="daily"
            ;;
        --hourly)
            LEVEL='2'
            SESSION_LABEL="hourly"
            ;;
        --file-system=*)
            FILESYSTEM=$(echo $1 | sed "s|--file-system=||g")
            ;;
        --help)
            usage
            exit 1
            ;;
        *)
            printf "Error: Unknown flag '%s'\n" $1 > /dev/stderr
            usage
            exit 1
            ;;
    esac

    shift
done

DESTINATION="$DESTINATION/backup-$(date +'%Y-%m-%d').$LEVEL.dump"

$XFSDUMP -l $LEVEL -L $SESSION_LABEL  -M $MEDIA_LABEL -f $DESTINATION $FILESYSTEM