}
# compares one local well-known folder against the similar folder on a
-# remote destination.
+# remote destination. the first folder is the archive name, with no paths.
+# the second paramter is the local path component of the archive, such as
+# "/z" if the archives are found in the /z hierarchy. the third parameter
+# is the remote location of the archive, which should just be a host name.
+# the fourth parameter is the destination path component to match the local
+# path component (since these can differ).
function do_a_folder_compare()
{
local archname="$1"; shift
+ local pathing="$1"; shift
local dest="$1"; shift
+ local destpath="$1"; shift
if [ -z "$archname" -o -z "$dest" ]; then
echo "do_a_folder_compare needs an archive name and a destination host."
return 1
if [ -d "/z/$archname" ]; then
sep 14
- echo "Comparing $archname folder..."
- compare_dirs /z/${archname} ${dest}:/z/${archname}
+ echo "Comparing ${pathing}/${archname} with remote $dest:${destpath}/${archname}"
+ compare_dirs ${pathing}/${archname} ${dest}:${destpath}/${archname}
sep 14
fi
}
# runs through all the local archives on this host to make sure nothing is
# different when compared with the mainline versions on the specified host.
+# the first parameter is the remote version to compare against. if there is
+# a second parameter, it is used as the path on the local machine where the
+# comparison should be based (e.g. an archive drive rather than /z/).
function uber_archive_comparator()
{
- local target="$1"; shift
- if [ -z "$target" ]; then
- echo uber_archive_comparator needs the target host to compare with.
+ local remote_arch="$1"; shift
+ if [ -z "$remote_arch" ]; then
+ echo uber_archive_comparator needs the remote archive host to compare with.
return 1
fi
+ local local_place="$1"; shift
+ if [ -z "$local_place" ]; then
+ local_place="/z"
+ fi
sep 14
- echo "comparing against host '$target'"
+ echo "comparing against host '$remote_arch'"
sep 14
#hmmm: shouldn't this be a list in a variable someplace?
toaster \
walrus \
; do
- do_a_folder_compare $archicle $target
+ do_a_folder_compare ${archicle} ${local_place} ${remote_arch} "/z"
done
}
exit 1
fi
+source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
+
out1="$(mktemp "$TMP/compare_dirs_output.XXXXXX")"
out2="$(mktemp "$TMP/compare_dirs_output.XXXXXX")"
if [ -z "$host1" ]; then
# fully local compare location for first dir.
pushd "$dir1" &>/dev/null
+ exit_on_error "compare_dirs: seeking directory $dir1"
find . >"$out1"
popd &>/dev/null
else
# remote compare location for first dir.
ssh "$host1" "cd \"$dir1\" && find ." >"$out1"
+ exit_on_error "compare_dirs: listing remote directory $dir1"
fi
# sort the output from listing the first directory.
if [ -z "$host2" ]; then
# fully local compare location for second dir.
pushd "$dir2" &>/dev/null
+ exit_on_error "compare_dirs: seeking directory $dir2"
find . >"$out2"
popd &>/dev/null
else
# remote compare location for second dir.
ssh "$host2" "cd \"$dir2\" && find ." >"$out2"
+ exit_on_error "compare_dirs: listing remote directory $dir2"
fi
# sort the output from listing the second directory.