1#!/bin/sh 2set -e 3 4tar=${tar-star} 5if echo "${tar}" | grep / > /dev/null; then 6 if echo "${tar}" | grep '^/' > /dev/null; then 7 : 8 else 9 tar=`pwd`/${tar} 10 fi 11fi 12echo tar installed as "$tar" 1>&2 13 14# 15# This is where GNU tar always fails as GNU tar is unable to hndle renamed 16# directories with incremental restores. 17# 18 19mkdir /tmp/test.$$ 20cd /tmp/test.$$ 21 22set -x 23 24mkdir test 25mkdir test/dir1 26mkdir test/dir2 27 28echo dir1-file > test/dir1/dir1-file 29echo dir2-file > test/dir2/dir2-file 30 31"$tar" -c -xdev -sparse -acl -link-dirs level=0 \ 32 tardumps=/tmp/test.$$/tardumps -wtardumps \ 33 f=/tmp/test.$$/full.tar -C /tmp/test.$$/test . 34 35 36rm -rf test/dir2 37mv test/dir1 test/dir2 38 39"$tar" -c -xdev -sparse -acl -link-dirs level=1 \ 40 tardumps=/tmp/test.$$/tardumps -wtardumps \ 41 f=/tmp/test.$$/incremental.tar -C /tmp/test.$$/test . 42 43mv test orig 44mkdir test 45cd /tmp/test.$$/test 46 47"$tar" -xpU -restore -partial f=/tmp/test.$$/full.tar 48"$tar" -xpU -restore -partial f=/tmp/test.$$/incremental.tar 49 50rm star-symtable 51rm -rf star-tmpdir 52cd /tmp/test.$$/ 53diff -r orig test > diff.out 54ret=$? 55 56cd / 57if [ "$ret" = 0 ]; then 58 rm -rf /tmp/test.$$ 59fi 60exit $ret 61