File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / testsuite / hardlinks.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Fri Feb 17 15:09:30 2012 UTC (12 years, 4 months ago) by misho
Branches: rsync, MAIN
CVS tags: rsync3_0_9p0, RSYNC3_0_9, HEAD
rsync

    1: #! /bin/sh
    2: 
    3: # Copyright (C) 2002 by Martin Pool <mbp@samba.org>
    4: 
    5: # This program is distributable under the terms of the GNU GPL (see
    6: # COPYING).
    7: 
    8: # Test rsync handling of hardlinks.  By default, rsync does not detect
    9: # hard links and they get sent as separate files.  If you specify -H,
   10: # then hard links are detected and linked together on the receiver.
   11: 
   12: . "$suitedir/rsync.fns"
   13: 
   14: SSH="$scratchdir/src/support/lsh"
   15: 
   16: outfile="$scratchdir/rsync.out"
   17: 
   18: # Build some hardlinks
   19: 
   20: fromdir="$scratchdir/from"
   21: todir="$scratchdir/to"
   22: 
   23: # TODO: Need to test whether hardlinks are possible on this OS/filesystem
   24: 
   25: mkdir "$fromdir"
   26: name1="$fromdir/name1"
   27: name2="$fromdir/name2"
   28: name3="$fromdir/name3"
   29: name4="$fromdir/name4"
   30: echo "This is the file" > "$name1"
   31: ln "$name1" "$name2" || test_skipped "Can't create hardlink"
   32: ln "$name2" "$name3" || fail "Can't create hardlink"
   33: cp "$name2" "$name4" || fail "Can't copy file"
   34: cat $srcdir/*.c >"$fromdir/text"
   35: 
   36: checkit "$RSYNC -aHivv '$fromdir/' '$todir/'" "$fromdir" "$todir"
   37: 
   38: echo "extra extra" >>"$todir/name1"
   39: 
   40: checkit "$RSYNC -aHivv --no-whole-file '$fromdir/' '$todir/'" "$fromdir" "$todir"
   41: 
   42: # Add a new link in a new subdirectory to test that we don't try to link
   43: # the files before the directory gets created.  We also create a bunch of
   44: # extra files to ensure that an incremental-recursion transfer works across
   45: # distant files.
   46: makepath "$fromdir/subdir/down/deep"
   47: 
   48: files=''
   49: for x in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9; do
   50:     for y in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9; do
   51: 	files="$files $x$y"
   52:     done
   53: done
   54: (cd "$fromdir/subdir"; touch $files)
   55: 
   56: ln "$name1" "$fromdir/subdir/down/deep/new-file"
   57: rm "$todir/text"
   58: 
   59: checkit "$RSYNC -aHivve '$SSH' --rsync-path='$RSYNC' '$fromdir/' localhost:'$todir/'" "$fromdir" "$todir"
   60: 
   61: # Do some duplicate copies using --link-dest and --copy-dest to test that
   62: # we hard-link all locally-inherited items.
   63: checkit "$RSYNC -aHivv --link-dest='$todir' '$fromdir/' '$chkdir/'" "$todir" "$chkdir"
   64: 
   65: rm -rf "$chkdir"
   66: checkit "$RSYNC -aHivv --copy-dest='$todir' '$fromdir/' '$chkdir/'" "$fromdir" "$chkdir"
   67: 
   68: # Create a hard link that has only one part in the hierarchy.
   69: echo "This is another file" >"$fromdir/solo"
   70: ln "$fromdir/solo" "$chkdir/solo" || fail "Can't create hardlink"
   71: 
   72: # Make sure that the checksum data doesn't slide due to an HLINK_BUMP() change.
   73: $RSYNC -aHivc "$fromdir/" "$chkdir/" | tee "$outfile"
   74: grep solo "$outfile" && test_fail "Erroneous copy of solo file occurred!"
   75: 
   76: # Make sure there's nothing wrong with sending a single file with -H
   77: # enabled (this has broken twice so far, so we need this test).
   78: rm -rf "$todir"
   79: $RSYNC -aHivv "$name1" "$todir/"
   80: diff $diffopt "$name1" "$todir" || test_fail "solo copy of name1 failed"
   81: 
   82: # The script would have aborted on error, so getting here means we've won.
   83: exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>