#!/bin/sh
-# bup-import-rsnapshot.sh
-
# Does an import of a rsnapshot archive.
usage() {
echo "Usage: bup import-rsnapshot [-n]" \
"<path to snapshot_root> [<backuptarget>]"
- echo "-n,--dry-rung: don't do anything just print out what would be done"
+ echo "-n,--dry-run: just print what would be done"
exit -1
}
-if [ "$1" == "-n" ] || [ "$1" == "--dry-run" ]; then
- bup () { echo "bup $@"; }
- shift 1
-fi
+DRY_RUN=
+while [ "$1" = "-n" -o "$1" = "--dry-run" ]; do
+ DRY_RUN=echo
+ shift
+done
-[ "$#" -eq 1 ] || [ "$#" -eq 2 ] || usage
+bup()
+{
+ $DRY_RUN "${BUP_MAIN_EXE:=bup}" "$@"
+}
-if [ ! -e "$1/." ]; then
- echo "$1 isn't a directory!"
- exit -1
+SNAPSHOT_ROOT=$1
+TARGET=$2
+
+[ -n "$SNAPSHOT_ROOT" -a "$#" -le 2 ] || usage
+
+if [ ! -e "$SNAPSHOT_ROOT/." ]; then
+ echo "'$SNAPSHOT_ROOT' isn't a directory!"
+ exit 1
fi
-TARGET=
-[ "$#" -eq 2 ] && TARGET="$2"
-
-
-ABSPATH=`readlink -f "$1"`
-
-for SNAPSHOT in "$ABSPATH/"*; do
- if [ -e "$SNAPSHOT/." ]; then
- for BRANCH_PATH in "$SNAPSHOT/"*; do
- if [ -e "$BRANCH_PATH/." ]; then
- # Get the snapshot's ctime
- DATE=`stat -c %Z "$BRANCH_PATH"`
- BRANCH=`basename "$BRANCH_PATH"`
- TMPIDX="/tmp/$BRANCH"
-
- if [ "$TARGET" == "" ] || [ "$TARGET" == "$BRANCH" ]; then
- bup index -ux \
- $BRANCH_PATH/
- bup save \
- --strip \
- --date=$DATE \
- -n $BRANCH \
- $BRANCH_PATH/
-
- if [ -e "$TMPIDX" ]; then
- rm "$TMPIDX"
- fi
- fi
- fi
- done
- fi
-done
+cd "$SNAPSHOT_ROOT" || exit 2
+
+for SNAPSHOT in *; do
+ [ -e "$SNAPSHOT/." ] || continue
+ echo "snapshot='$SNAPSHOT'" >&2
+ for BRANCH_PATH in "$SNAPSHOT/"*; do
+ BRANCH=$(basename "$BRANCH_PATH")
+ [ -e "$BRANCH_PATH/." ] || continue
+ [ -z "$TARGET" -o "$TARGET" = "$BRANCH" ] || continue
+
+ echo "snapshot='$SNAPSHOT' branch='$BRANCH'" >&2
+
+ # Get the snapshot's ctime
+ DATE=$(perl -e '@a=stat($ARGV[0]) or die "$ARGV[0]: $!";
+ print $a[10];' "$BRANCH_PATH")
+ [ -n "$DATE" ] || exit 3
+
+ TMPIDX=bupindex.$BRANCH.tmp
+ bup index -ux -f "$TMPIDX" "$BRANCH_PATH/"
+ bup save --strip --date="$DATE" \
+ -f "$TMPIDX" -n "$BRANCH" \
+ "$BRANCH_PATH/"
+ rm -f "$TMPIDX"
+ done
+done