Copy symlinks instead of contents

This commit is contained in:
Balakrishnan Balasubramanian 2022-12-27 22:02:48 -05:00
parent 1b79c31f26
commit adc1f3ce61

View File

@ -3,16 +3,25 @@
root="root"
all_files() {
find $root -type f,l
find $root -type f,l
}
for f in $(all_files)
do
install_path="${f#"$root"}"
mkdir -p "$(dirname "$install_path")"
# ln -snf "$PWD/$f" "$install_path"
read -ra perm_options < <(stat -c '-m %a -g %g -o %u' "$PWD/$f")
install -C "${perm_options[@]}" "$PWD/$f" "$install_path"
install_path="${f#"$root"}"
mkdir -p "$(dirname "$install_path")"
# Sometimes it is simpler to just link instead of copy
# ln -snf "$PWD/$f" "$install_path"
# install -C only copies if destination has changed.
# However for symlinks, it always copies and it copies the *contents* and not the symlinks.
if [[ -L "$PWD/$f" ]]; then
cp -P "$PWD/$f" "$install_path"
else
read -ra perm_options < <(stat -c '-m %a -g %g -o %u' "$PWD/$f")
install -C "${perm_options[@]}" "$PWD/$f" "$install_path"
fi
done
# vim: set filetype=bash: