summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/backup16
1 files changed, 9 insertions, 7 deletions
diff --git a/bin/backup b/bin/backup
index 72c69c3..adce78d 100755
--- a/bin/backup
+++ b/bin/backup
@@ -1,8 +1,6 @@
#!/bin/sh
# Incremental backup using rsync(1).
-[ "$USER" = root ] || exec sudo "$0" "$@"
-
backup() {
date=$(date +%Y%m%d_%H%M%S)
last=$(rsync --list-only "$dest/" 2>/dev/null | cut -b 47- | tail -1)
@@ -12,25 +10,29 @@ backup() {
(*) opt_link=;;
esac
- rsync -HSxa$optv --exclude-from=$ignore $opt_link / /boot "$dest/$date"
+ rsync -HSxa$optv --exclude-from=$ignore $opt_link $volumes "$dest/$date"
}
dest=/.history
-ignore=/etc/backup/ignore
+ignore=/etc/backupignore
+volumes='/ /boot'
-while getopts :d:i:nv opt; do
+while getopts :d:i:nuv opt; do
case $opt in
(d) dest="$OPTARG" ;;
(i) ignore="$OPTARG" ;;
(n|v) optv="$opt$optv" ;;
- (*) echo "Usage: $0 [-nv] [-d [host:]dir] [clean|diff]"; exit 1 ;;
+ (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";;
+(clean) exec backup-clean ${optv+-$optv} "$@" "$dest";;
(diff) exec diffdir "$@";;
esac