add establish-annex-link
This commit is contained in:
parent
4064d774ad
commit
928c65dfc4
|
@ -0,0 +1,116 @@
|
|||
#!/bin/bash
|
||||
|
||||
printf "This tool is for establishing sshfs links to transfer git-annex repo contents.\n"
|
||||
|
||||
printf "server or client?\n"
|
||||
printf 'EITHER OF `s` or `c`\n'
|
||||
|
||||
read -p "?> "
|
||||
|
||||
case "$REPLY" in
|
||||
s)
|
||||
printf "[] ensure that port 22 is unfiltered\n"
|
||||
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
|
||||
printf "[] starting sshd\n"
|
||||
sudo systemctl start sshd
|
||||
|
||||
WIRELESS_INTERFACE=$(
|
||||
nmcli --get-values GENERAL.DEVICE,GENERAL.TYPE device show |
|
||||
sed '/^wifi/!{h;d;};x' |
|
||||
head -n1)
|
||||
|
||||
IP_OF_INTERFACE=$(
|
||||
ip address show dev $WIRELESS_INTERFACE |
|
||||
grep 'inet ' |
|
||||
awk -F' ' '{print $2}' |
|
||||
awk -F'/' '{print $1}')
|
||||
|
||||
printf "[] instruct client to connect to %s\n" "$IP_OF_INTERFACE"
|
||||
|
||||
printf "[] waiting to stop sshd\n"
|
||||
|
||||
read
|
||||
|
||||
sudo systemctl stop sshd
|
||||
|
||||
printf "[] sshd stopped, but port 22 still open\n"
|
||||
;;
|
||||
c)
|
||||
printf "What IP to connect to?\n"
|
||||
printf "ENSURE THAT the IP is accessable on the current VLAN\n"
|
||||
|
||||
printf 'ONE OF `ipv4 address`'
|
||||
|
||||
read -p "?> " ADDRESS
|
||||
|
||||
INFORMED_GUESS=$(ssh usr@$ADDRESS hostname)
|
||||
if [ -z "$INFORMED_GUESS" ]; then
|
||||
printf "What hostname?\n"
|
||||
|
||||
mkdir -p ~/annex-remotes
|
||||
ls ~/annex-remotes
|
||||
|
||||
read -p "?> " REMOTE_HOST
|
||||
else
|
||||
REMOTE_HOST=$INFORMED_GUESS
|
||||
printf "[] using hostname %s\n" "$INFORMED_GUESS"
|
||||
fi
|
||||
|
||||
printf "[] mounting fs via sshfs\n"
|
||||
|
||||
mkdir -p ~/annex-remotes/$REMOTE_HOST
|
||||
fusermount3 -qu ~/annex-remotes/$REMOTE_HOST
|
||||
sshfs usr@$ADDRESS:/home/usr/annex ~/annex-remotes/$REMOTE_HOST
|
||||
|
||||
printf "[] mounted fs\n"
|
||||
|
||||
# check if the fuse mount worked
|
||||
df_output=$(df -h | grep -c '/home/usr/annex')
|
||||
if [ "$df_output" -eq 0 ]; then
|
||||
printf "It seems the sshfs mount didn't work. Exiting.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if we need to make a copy of the annex on the new device
|
||||
if [ ! -d ~/annex-remotes/$REMOTE_HOST/.git ]; then
|
||||
printf "Should I do that with the current computer's git-annex store?\n\n"
|
||||
|
||||
printf '`y`) initialize with the local store\n'
|
||||
printf '`n`) no, just mount the sshfs\n'
|
||||
|
||||
read -p '?> '
|
||||
|
||||
case $REPLY in
|
||||
y)
|
||||
cd ~/annex-remotes/$REMOTE_HOST
|
||||
printf "[] cloning the local git-annex store\n"
|
||||
git clone -v ~/annex
|
||||
|
||||
shopt -s dotglob # include dotfiles and dotdirs in wildcard
|
||||
mv ./annex/* . # move everything up a dir
|
||||
|
||||
if find "annex" -maxdepth 1 -type f -o -type d -empty; then # if annex is empty...
|
||||
printf "[] removing spurious ./annex directory\n"
|
||||
rm -r ./annex # ...remove it
|
||||
fi
|
||||
|
||||
git annex init "$REMOTE_HOST"
|
||||
cd ~/annex
|
||||
git remote add $REMOTE_HOST ~/annex-remotes/$REMOTE_HOST
|
||||
;;
|
||||
esac # it's okay that the `n` and `*` cases fall-through
|
||||
fi
|
||||
|
||||
printf "[] waiting to stop sshfs\n"
|
||||
|
||||
read
|
||||
|
||||
fusermount3 -u ~/annex-remotes/$REMOTE_HOST
|
||||
|
||||
printf "[] unmounted sshfs\n"
|
||||
;;
|
||||
*)
|
||||
printf "unknown\n"
|
||||
;;
|
||||
esac
|
Loading…
Reference in New Issue