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