]> arthur.barton.de Git - bup.git/blob - cmd/import-rsnapshot-cmd.sh
Simplify bup startup process
[bup.git] / cmd / import-rsnapshot-cmd.sh
1 #!/bin/sh
2 # Does an import of a rsnapshot archive.
3
4 cmd_dir="$(cd "$(dirname "$0")" && pwd)" || exit $?
5
6 usage() {
7     echo "Usage: bup import-rsnapshot [-n]" \
8         "<path to snapshot_root> [<backuptarget>]"
9     echo "-n,--dry-run: just print what would be done"
10     exit 1
11 }
12
13 DRY_RUN=
14 while [ "$1" = "-n" -o "$1" = "--dry-run" ]; do
15     DRY_RUN=echo
16     shift
17 done
18
19 bup()
20 {
21     $DRY_RUN "$cmd_dir/bup" "$@"
22 }
23
24 SNAPSHOT_ROOT=$1
25 TARGET=$2
26
27 [ -n "$SNAPSHOT_ROOT" -a "$#" -le 2 ] || usage
28
29 if [ ! -e "$SNAPSHOT_ROOT/." ]; then
30     echo "'$SNAPSHOT_ROOT' isn't a directory!"
31     exit 1
32 fi
33
34
35 cd "$SNAPSHOT_ROOT" || exit 2
36
37 for SNAPSHOT in *; do
38     [ -e "$SNAPSHOT/." ] || continue
39     echo "snapshot='$SNAPSHOT'" >&2
40     for BRANCH_PATH in "$SNAPSHOT/"*; do
41         BRANCH=$(basename "$BRANCH_PATH") || exit $?
42         [ -e "$BRANCH_PATH/." ] || continue
43         [ -z "$TARGET" -o "$TARGET" = "$BRANCH" ] || continue
44         
45         echo "snapshot='$SNAPSHOT' branch='$BRANCH'" >&2
46
47         # Get the snapshot's ctime
48         DATE=$(perl -e '@a=stat($ARGV[0]) or die "$ARGV[0]: $!";
49                         print $a[10];' "$BRANCH_PATH")
50         [ -n "$DATE" ] || exit 3
51
52         TMPIDX=bupindex.$BRANCH.tmp
53         bup index -ux -f "$TMPIDX" "$BRANCH_PATH/" || exit $?
54         bup save --strip --date="$DATE" \
55             -f "$TMPIDX" -n "$BRANCH" \
56             "$BRANCH_PATH/" || exit $?
57         rm "$TMPIDX" || exit $?
58     done
59 done