summaryrefslogtreecommitdiff
path: root/scripts/dump-tool
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dump-tool')
-rwxr-xr-xscripts/dump-tool49
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/dump-tool b/scripts/dump-tool
new file mode 100755
index 0000000..249b17a
--- /dev/null
+++ b/scripts/dump-tool
@@ -0,0 +1,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
+