39 lines
1.0 KiB
Bash
39 lines
1.0 KiB
Bash
echo "Stopping impermanence mount with source: ${source}, target: ${target}, path: ${path}."
|
|
|
|
source_current="${source}"
|
|
target_current="${target}"
|
|
|
|
IFS='/' read -ra path_parts <<< "${path}"
|
|
unset "path_parts[-1]"
|
|
|
|
for part in "${path_parts[@]}"; do
|
|
source_current="${source_current}/${part}"
|
|
target_current="${target_current}/${part}"
|
|
|
|
if [[ ! -d "${target_current}" ]]; then
|
|
break
|
|
fi
|
|
|
|
if [[ -d "${source_current}" ]]; then
|
|
continue
|
|
fi
|
|
|
|
read -r mode owner group <<< "$(stat -c '%a %u %g' "${target_current}")"
|
|
install -d -m "${mode}" -o "${owner}" -g "${group}" "${source_current}"
|
|
done
|
|
|
|
source=$(realpath -m "${source}/${path}")
|
|
target=$(realpath -m "${target}/${path}")
|
|
|
|
if [[ ! -e "${target}" ]] || { [[ -d "${target}" ]] && [[ -z "$(ls -A "${target}")" ]]; } || { [[ -f "${target}" ]] && [[ ! -s "${target}" ]]; }; then
|
|
exit 0
|
|
fi
|
|
|
|
if [[ -e "${source}" ]]; then
|
|
>&2 echo "Error: Source ${source} already exists. Cannot move ${target} to ${source}."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Moving target ${target} to source ${source}."
|
|
mv "${target}" "${source}"
|