2020 편집 : 나는 사용하고 있습니다systemd-답변은 아래에 게시되어 있습니다.몇년이 지났는데 정말 만족스럽습니다.
원격 파일 처리를 용이하게 하기 위해 다음을 설정했습니다.afuse
그리고sshfs
.bashrc
로컬 사용자에서 실행하십시오. bash init 후에는 모든 원격 트리가 ~/.ssh/config/
원하는 대로 마운트되고 ~/scp/
올바른 액세스 권한/제한이 적용됩니다.
현재 위치(파일 출처) .bashrc
:
exists(){ [[ ${1:0:1} == "/" ]] && { test -f $1 || test -d $1; } \
|| command -v $1 >/dev/null 2>&1; }
# Run an afuse process as daemon
if pgrep -u $USER -f "afuse.*$USER/scp" >/dev/null ; then
echo "afuse/sshfs already running"
else
exists afuse && exists sshfs && exists $HOME/scp \
&& export TAfuseX=$(mktemp --suffix=__afuse) && chmod u+x "$TAfuseX" \
&& echo -e "#!/bin/sh\ngrep '^Host ..' ~/.ssh/co* |colrm 1 5" > $TAfuseX \
&& echo "running afuse/sshfs with nohup" \
&& nohup afuse -o mount_template="sshfs %r:/ %m" \
-o unmount_template="fusermount -u -z %m" \
-o populate_root_command=$TAfuseX \
~/scp 2>&1 > ~/afuse.log
fi
(@sato-katsura의 유용한 팁이 이미 위에 포함되어 있습니다)
위의 내용은 기계가 종료될 때까지 제대로 작동하도록 보장합니다. X개의 정지/시작 횟수와는 아무런 관련이 없습니다. 퓨즈 충돌이 발생하면(본 적이 없습니다) 다음 쉘이 이를 다시 생성합니다.
마이그레이션하기 전에도 유용한 최적화, 문제점 또는 다른 팁을 보셨나요 systemd
? 이것을 시스템 사용자 단위로 어떻게 포장합니까?
답변1
나는 이것을 사용하고있다체계몇 년 전의 사용자 서비스 단위 정의 파일:afuse.service
[Unit]
Description="SSHFS via Afuse automounter"
AssertPathExists=%h/scp/
AssertFileIsExecutable=/usr/bin/afuse
AssertFileIsExecutable=/usr/bin/sshfs
[Service]
Type=forking
WorkingDirectory=%h/scp
ExecStart=/usr/bin/afuse \
-o fsname=AutoSCP \
-o timeout=300 \
-o auto_unmount \
-o flushwrites \
-o mount_template="sshfs -o ServerAliveInterval=10 -o reconnect %%r:/ %%m" \
-o unmount_template="fusermount -u -z %%m" .
Restart=always
PrivateTmp=true
#NoNewPrivileges=true <- That option breaks this unit, why?
[Install]
WantedBy=default.target
afuse.service
다음 위치에 위 내용이 포함된 파일을 만듭니다.
~/.config/systemd/user/
나만을 위해 설치하는 경우/etc/systemd/user/
모든 로컬 사용자용으로 설치하는 경우
이 서비스를 설치하십시오:
mkdir ~/scp # Or Home Directories of all existing users + /etc/skel/
systemctl --user daemon-reload # If root, then omit '--user'
# If enabling only for the current user:
systemctl --user enable afuse.service
# If enabling for all users, execute as root:
# systemctl --user --global enable service
systemctl --user start afuse.service
필요한 경우 소켓을 가 아닌 /tmp/...
아래 어딘가에 배치하도록 SSH-AGENT를 구성할 수 ~
있으며 서비스는 프록시를 사용할 수 있어야 합니다. (요청 시 정확한 단계를 추가할 수도 있습니다. @dirdi)