mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-05-11 00:14:00 -04:00
69 lines
1.8 KiB
Bash
69 lines
1.8 KiB
Bash
#!/bin/sh
|
|
|
|
# Copyright (C) 2004-2022 Wayne Davison
|
|
|
|
# This program is distributable under the terms of the GNU GPL (see
|
|
# COPYING).
|
|
|
|
# Test rsync handling of --compare-dest and similar options.
|
|
|
|
. "$suitedir/rsync.fns"
|
|
|
|
alt1dir="$tmpdir/alt1"
|
|
alt2dir="$tmpdir/alt2"
|
|
alt3dir="$tmpdir/alt3"
|
|
|
|
SSH="$scratchdir/src/support/lsh.sh"
|
|
|
|
# Build some files/dirs/links to copy
|
|
|
|
hands_setup
|
|
|
|
# Setup the alt and chk dirs
|
|
$RSYNC -av --include=text --include='*/' --exclude='*' "$fromdir/" "$alt1dir/"
|
|
$RSYNC -av --include=etc-ltr-list --include='*/' --exclude='*' "$fromdir/" "$alt2dir/"
|
|
|
|
# Create a side dir where there is a candidate destfile of the same name as a sourcefile
|
|
echo "This is a test file" >"$fromdir/likely"
|
|
|
|
mkdir "$alt3dir"
|
|
echo "This is a test file" >"$alt3dir/likely"
|
|
|
|
sleep 1
|
|
touch "$fromdir/dir/text" "$fromdir/likely"
|
|
|
|
$RSYNC -av --exclude=/text --exclude=etc-ltr-list "$fromdir/" "$chkdir/"
|
|
|
|
# Let's do it!
|
|
checkit "$RSYNC -avv --no-whole-file \
|
|
--compare-dest='$alt1dir' --compare-dest='$alt2dir' \
|
|
'$fromdir/' '$todir/'" "$chkdir" "$todir"
|
|
|
|
rm -rf "$todir"
|
|
checkit "$RSYNC -avv --no-whole-file \
|
|
--copy-dest='$alt1dir' --copy-dest='$alt2dir' \
|
|
'$fromdir/' '$todir/'" "$fromdir" "$todir"
|
|
|
|
# Test that copy_file() works correctly with tmpfiles
|
|
for maybe_inplace in '' --inplace; do
|
|
rm -rf "$todir"
|
|
checkit "$RSYNC -av $maybe_inplace --copy-dest='$alt3dir' \
|
|
'$fromdir/' '$todir/'" "$fromdir" "$todir"
|
|
|
|
for srchost in '' 'localhost:'; do
|
|
if [ -z "$srchost" ]; then
|
|
desthost='localhost:'
|
|
else
|
|
desthost=''
|
|
fi
|
|
|
|
rm -rf "$todir"
|
|
checkit "$RSYNC -ave '$SSH' --rsync-path='$RSYNC' $maybe_inplace \
|
|
--copy-dest='$alt3dir' '$srchost$fromdir/' '$desthost$todir/'" \
|
|
"$fromdir" "$todir"
|
|
done
|
|
done
|
|
|
|
# The script would have aborted on error, so getting here means we've won.
|
|
exit 0
|