我有一个名为“secure”的目录,只要服务器可以访问,我就会通过 sshfs 将其安装到我的笔记本电脑上。
当该服务器处于可访问状态时,我想通过名为“sync”的目录保持它双向同步。
“安全”目录在登录时使用 pam_mount 挂载,在注销时卸载。我已设置 pam_script,以便在挂载失败时创建指向“同步”的符号链接,并在卸载时删除该链接。
我第一次尝试使用 pam_script 运行 unison:
#!/bin/bash
#pam_script_ses_open (runs at the start of a session)
home=`eval echo ~$PAM_USER`
secure=$home/secure
sync=$home/sync
if mount|grep "$secure"; then
echo Synchronizing with server $sync : $secure
unison "file://$sync" "file://$secure"
else
ln -s "$sync" "$secure"
fi
会议结束时:
#!/bin/bash
userid=$PAM_USER
home=`eval echo ~$userid`
secure=$home/secure
sync=$home/sync
if mount|grep "$secure"; then
echo Synchronizing with server
unison "file://$sync" "file://$secure"
else
rm "$secure"
fi
这两个脚本都在 root 权限下运行。
在登出两个目录同步得很好。
在登录但是我收到以下错误信息:
与服务器 /home/users/user/sync 同步:/home/users/user/secure
正在联系服务器...
致命错误:根数量错误:预期为 2 个,但提供了 4 个(ssh://user@server/、/home/users/user、file:///home/users/user/secure、file:///home/users/user/sync)
(也许您在命令行和配置文件中都指定了根?)
我已经验证任何用户主目录中都不存在“.unison”目录,并且执行了 apt-get purge unison,然后执行了 apt-get install unison。
我不太喜欢以这种方式使用 unison(即使它确实有效),因为它只会在登录和注销时同步。这不是实时同步。
每当挂载目录时,如何让 sshfs 或 fstab 启动实时同步,或者如果这不可能,为什么 unison 在我当前设置中会失败?
我正在寻找一个干净且强大的解决方案。