summaryrefslogtreecommitdiff
path: root/borg-family-0.1/src/sbin/bfrun
blob: c02187accb06b8e733c9597004cbdd8d1d510ea6 (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
#!/bin/bash
source bfenv
bfwhat | while IFS=' ' read -r mpe dev; do
	mp=$(echo -e "$mpe")              # mp: interpret escapings that may be present in /proc/mounts (\040 for space...)
	name=${mp// /_};                  # name: replace space by underscore
	name=${mp//\//-}; name=${name/-/} # name: replace slash by dash, remove the leading one
	if [[ "$mp $name $dev" =~ "--" || "$mp $name $dev" =~ ".." || "$mp $name $dev" =~ "[|&;()<>]" ]]; then
		echo "Skipping $mpe because of shell unsafe characters" >&2
		continue
	fi

	comment=$(blkid -- "$dev")
	if [ -r "/etc/borg-family/excludes.d/$name" ]; then
		runtime_args=( --comment="$comment" --exclude-from="/etc/borg-family/excludes.d/$name" )
	else	
		runtime_args=( --comment="$comment" )
	fi

	bfhooks before "$name" && \
	borg create "${runtime_args[@]}" "${borg_create_opts[@]}" "::{hostname}-$name-{now:%Y-%m-%d}" "$mp"
	rc1=$?
	bfhooks after "$name"
	rc2=$?
	if [ "$rc1" -ne 0 -o "$rc2" -ne 0 ]; then
		echo "Errors during $name backup, return codes $rc1 (bfhook before && borg create) and $rc2 (bfhook after)" >&2
	else
		[ "x$quiet" == "x1" ] || echo "Success for $name backup"
	fi
done