blob: 9de097fa5175fccd7243de7baab4ef0cc4cc8c4f (
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
|
#!/bin/sh
# Incremental backup using rsync(1).
backup() {
date=$(date +%Y%m%d_%H%M%S)
last=$(rsync --list-only "$dest/" 2>/dev/null | awk '{r=$NF} END {print r}')
case $last in
([12]*) opt_link=--link-dest=../$last;;
(*) opt_link=;;
esac
rsync -HSxa$optv --exclude-from=$ignore $opt_link $volumes "$dest/$date"
}
dest=/.history
ignore=/etc/backupignore
volumes='/ /boot'
while getopts :d:i:nuv opt; do
case $opt in
(d) dest="$OPTARG" ;;
(i) ignore="$OPTARG" ;;
(n|v) optv="$opt$optv" ;;
(u) optu=1 volumes="$HOME" ignore="$HOME/.backupignore" ;;
(*) echo "Usage: $0 [-nuv] [-d [[user@]host:]dir] [clean|diff]"; exit 1 ;;
esac
done
shift $((OPTIND - 1))
[ "$optu" ] || [ "$USER" = root ] || exec sudo "$0" "$@"
[ "$1" ] && cmd=$1 && shift || cmd=""
case $cmd in
(""|save) backup ;;
(clean) exec backup-clean ${optv+-$optv} "$@" "$dest";;
(diff) exec diffdir "$@";;
esac
|