summaryrefslogtreecommitdiff
path: root/bin/backup
blob: 059f2dc2d24a2b6a12b0e3039018d3355a24625c (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
#!/bin/sh
# Incremental backup using rsync(1).

[ "$USER" = root ] || exec sudo "$0" "$@"

while getopts :Fv opt; do
	case $opt in
	(F|v) eval "opt$opt=$opt" ;;
	(*) echo "Usage: $0 [-Fv] [[host:]dir]"; exit 1 ;;
	esac
done
shift $((OPTIND - 1))

dest=${1:-/.history}
date=$(date +%Y%m%d_%H%M%S)
last=$(rsync --list-only $dest/ 2>/dev/null | cut -b 47- | tail -1)

case $last in
(2*) opt_link=--link-dest=../$last;;
(*) opt_link=;;
esac

[ "$optF" ] && fsfreeze -f / && trap 'fsfreeze -u /' EXIT

rsync -HSxa$optv --exclude-from=/etc/backup/ignore $opt_link / /boot $dest/$date