set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-if sudo test -e /q/root/.ssh; then
- sudo /a/exe/lnf /q/root/.ssh /root
+[[ $EUID == 0 ]] || exec sudo "$BASH_SOURCE" "$@"
+
+if test -e /q/root/.ssh; then
+ dest=/q/root/.ssh
+ /a/exe/lnf $dest /root
else
- sudo mkdir /root/.ssh
+ dest=/root/.ssh
+ mkdir -p /root/.ssh
+ chmod 700 /root/.ssh
fi
-sudo cp -rL $(eval echo ~${SUDO_USER:-$USER})/.ssh/* /root/.ssh
-sudo chown -R root:root /root/.ssh
+# -t times, so it won't rewrite the file every time,
+# -L resolve links
+rsync -rtL $(eval echo ~${SUDO_USER:-$USER})/.ssh $dest
+chown -R root:root /root/.ssh