esac
done
+if [ -z "$destdir" ]; then
+ echo "ERROR: destination directory was not specified"
+ exit 1
+fi
+
+if ! which rdfind 2>/dev/null >/dev/null; then
+ echo "ERROR: rdfind is not installed"
+ exit 1
+fi
+
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
-grep '^File:' WHENCE | sed -e 's/^File: *//g;s/"//g' | while read f; do
+grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g' | while read k f; do
test -f "$f" || continue
install -d "$destdir/$(dirname "$f")"
$verbose "copying/compressing file $f$compext"
- if test "$compress" != "cat" && grep -q "^Raw: $f\$" WHENCE; then
+ if test "$compress" != "cat" && test "$k" = "RawFile"; then
$verbose "compression will be skipped for file $f"
cat "$f" > "$destdir/$f"
else
fi
done
+$verbose "Finding duplicate files"
+rdfind -makesymlinks true -makeresultsfile false "$destdir" >/dev/null
+find "$destdir" -type l | while read -r l; do
+ target="$(realpath "$l")"
+ $verbose "Correcting path for $l"
+ ln -fs "$(realpath --relative-to="$(dirname "$(realpath -s "$l")")" "$target")" "$l"
+done
+
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
grep -E '^Link:' WHENCE | sed -e 's/^Link: *//g;s/-> //g' | while read f d; do
if test -L "$f$compext"; then