원격 서버에 마운트된 내 서버에 2개의 로컬 디렉터리가 있습니다. dirs-sshfs.sh에 로컬로 연결
autossh -M 23 -R 24:localhost:22 user@server
하고 원격으로 마운트하세요.
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,cache_timeout=3600 [email protected]:/mnt/localdir1/ /home/user/dir1/ -p 24
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,cache_timeout=3600 [email protected]:/mnt/localdir2/ /home/user/dir2/ -p 24
잠겨 있으면 sshfs-restart.sh를 사용하여 연결을 재설정하세요.
pkill -kill -f "sshfs"
fusermount -uz dir1
fusermount -uz dir2
./dirs-sshfs.sh
모든 것이 잘 작동하지만 1) 잠겨 있는지 확인하고 2) 수동으로 재설정해야 합니다.
까다로운 점은 잠긴 경우 홈 디렉토리에 대한 ls도 재설정할 때까지 무기한으로 잠긴다는 것입니다. 그래서 원격 서버 측에서 관리하는 것을 포기했습니다. autossh 연결이 유지되는 로컬 서버 측에는 거의 작동하는 다음 스크립트가 있습니다. 이는 실패를 포착하고 연결을 재설정하려고 시도하지만 제거 후 다시 설치되지 않습니다. dirs-sshfs.sh의 내용을 ssh-restart.sh에 넣으려고 시도했지만 run-sshfs-restart.sh에 포함된 원격 서버 측에서도 ./sshfs-restart.sh &
작동하지 못했습니다. 테스트 스크립트(testsshfs2.sh)에는 ls; echo; ls dir1; echo; ls dir2; echo; date; echo
이를 포함하고 있으며 모든 것이 설치/작동하는지 빠르고 쉽게 확인할 수 있도록 만들어졌습니다.
이것은 sshfsmanager.sh이며 sleep 명령을 사용하여 while 루프 내부의 로컬 서버에서 실행됩니다. 향후 cronjob으로 이동될 수 있습니다.
sshout=$(timeout 300 ssh user@host ./testsshfs2.sh)
# timeout duration probably doesnt need to be that long, but sometimes it does take 90+ sec to ls
# the remote dirs as they are network shares mounted to a vm that are then mounted across a ssh
# tunnel. Once this is working, that duration would be fine tuned. Also 100 is just an arbitrary
# number larger than ls | wc -l would provide. It should be updated to where it would catch if
# either of the mounts fail instead of only when both do. This timeout method is the only way
# ive found to get around the infinite ls lock.
if [ `echo "$sshout" | wc -l` -le 100 ]; then
echo "$sshout" | wc -l
ssh user@host ./sshfs-restart.sh
#adding a "&& sleep 60" or using the run-sshfs-restart.sh script did not work
echo sshfs restarted
else
echo sshfs is fine
echo "$sshout" | wc -l
fi
여기에 배치하면 대부분의 스크립트에 대한 로깅이 제거되었습니다(포트 변경 및 사용자/호스트 제거 포함). 대부분의 로그 줄은 날짜일 뿐입니다 >> sshfsmanager.log
로컬 VM은 ubuntu 18.04.5를 실행하고 원격 서버는 gentoo 5.10.27을 실행하는 공유 VPS입니다.