. lib/constants_user  # USERNAME
 . lib/constants_borg  # NAME_BORGAPP
 . lib/copy_and_unmount_secrets
+. lib/expect_n_args
 . lib/mount_secrets
 . lib/prefixed_msg
 . lib/retry_until
 REPOS_SITE_DOMAIN=plomlompom.com
 REMOTE_PATH_REPOS=/var/repos
 
+expect_n_args 1 1 "(device name, e.g. 'sda')" $@
 abort_if_offline
 abort_if_not_user "${USERNAME}"
 abort_if_exists "${PATH_SECRETS}"
 
--- /dev/null
+#!/bin/sh
+set -e
+cd $(dirname "$0")
+. lib/abort_if_not_user
+. lib/expect_n_args
+. lib/prefixed_msg
+
+prefixed_msg_init
+abort_if_not_user root
+expect_n_args 1 99 "TAG.." $@
+TAGS="$@"
+for _TAG in ${TAGS}; do
+    _PATH_TAG="../copy/${_TAG}"
+    if [ ! -d "${_PATH_TAG}" ]; then
+        continue
+    fi
+    prefixed_msg_init "tag [${_TAG}]"
+    cd "${_PATH_TAG}"
+    for _PATH_REL in $(find -L . -type f | cut -c 3-); do
+        _FILENAME="$(basename ${_PATH_REL})"
+        _PATH_REL_PARENT=$(dirname "${_PATH_REL}")
+        if [ "${_FILENAME}" = 'KILL_ME' ]; then
+            _TYPE='directory'
+            _PATH_ABS="/${_PATH_REL_PARENT}"
+        elif [ $(echo "${_FILENAME}" | grep -E '^LINK_ME' | wc -l) -gt 0 ]; then
+            _TYPE='symbolic link'
+            _LINK_TARGET=$(cat "${_PATH_REL}" | head -1)
+            _LINK_NAME=$(cat "${_PATH_REL}" | tail -1)
+            if [ -z "${_LINK_NAME}" ]; then
+                _LINK_NAME=$(basename "${_LINK_TARGET}")
+            fi
+            _PATH_ABS="/${_PATH_REL_PARENT}/${_LINK_NAME}"
+        else 
+            _TYPE='regular file'
+            _PATH_ABS="/${_PATH_REL}"
+        fi
+        if [ -h "${_PATH_ABS}" ]; then
+            if [ "${_TYPE}" = 'symbolic link' ]; then
+                _LOCAL_TARGET=$(stat "${_PATH_ABS}" | head -1 | sed -E 's/^  File: [[:print:]]+ -> //g')
+                if [ "$(echo ${_LOCAL_TARGET} | cut -c1)" != "/" ]; then
+                    _LOCAL_TARGET=$(realpath --canonicalize-missing "/${_PATH_REL_PARENT}/${_LOCAL_TARGET}")
+                fi
+                if [ "$(echo ${_LINK_TARGET} | cut -c1)" != "/" ]; then
+                    _LINK_TARGET=$(realpath --canonicalize-missing "/${_PATH_REL_PARENT}/${_LINK_TARGET}")
+                fi
+                if [ "${_LOCAL_TARGET}" != "${_LINK_TARGET}" ]; then
+                    prefixed_msg "${_TYPE} targeting ${_LOCAL_TARGET} != ${_LINK_TARGET}"
+                fi
+            else 
+                prefixed_msg "Not a ${_TYPE}: ${_PATH_ABS}"
+            fi
+        elif [ ! -e "${_PATH_ABS}" ]; then
+            prefixed_msg "Missing ${_TYPE}: ${_PATH_ABS}"
+        elif [ "${_TYPE}" != "$(stat --format=%F ${_PATH_ABS})" ]; then
+            prefixed_msg "Not a ${_TYPE}: ${_PATH_ABS}"
+        elif [ "${_TYPE}" = 'regular file' ]; then
+            ! diff "${_PATH_ABS}" "${_PATH_REL}" > /dev/null && prefixed_msg "Regular file differs: ${_PATH_ABS}"
+        fi
+    done
+    cd - > /dev/null
+    prefixed_msg_exit
+done
+prefixed_msg_exit