将 SSHFS 挂载与本地文件系统同步

将 SSHFS 挂载与本地文件系统同步

我有一个名为“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 在我当前设置中会失败?

我正在寻找一个干净且强大的解决方案。

相关内容