有没有办法将 PC 与 nextcloud 服务器同步,但不使用桌面 GUI?
电脑启动后应立即进行同步。即使用户尚未登录。
我知道nextcloud命令。我可以运行一个 cron 作业并每 N 分钟调用一次“nextcloudcmd”。
但这并不好。
我确实更喜欢立即进行同步的解决方案(例如通过 inotify)。
这怎么可能呢?
我认为包装 nextcloudcmd 的 shell 脚本只是一种解决方法。
如果 nextcloud 不提供此功能,那么我将使用可以做到这一点的 seafile。请参阅:https://manual.seafile.com/deploy/start_seafile_at_system_bootup.html
我个人认为这很奇怪。GUI 可以做到这一点。我只想要同样的东西,但没有 GUI。是的,我可以在“假”帧缓冲区 X 环境中运行 GUI……但不,那太肮脏了。
答案1
这需要基本的 shell 脚本:测试是否存在锁定文件,如果不存在则创建锁定文件,运行更新,删除锁定文件。这样就nextcloudcmd
不会多次启动。
未经测试的概念证明:
#!/bin/sh
LOCKFILE=/var/lock/ncupdate.lock
[ -e $LOCKFILE ] && kill -0 $(cat $LOCKFILE) 2>/dev/null && exit;
echo $$ > $LOCKFILE
nextcloudcmd
rm $LOCKFILE
更新:它测试正在运行的进程,因此如果脚本被终止,它仍然会运行并覆盖 PID。
答案2
nextcloudcmd /local https://DOMAIN/remote.php/webdav/FOLDER_PATH
例如,同步文件夹 /backup 和远程 Nextcloud 中的文件夹 Documents
nextcloudcmd /backup /https://nextcloud.mydomain.com/remote.php/webdav/Documents
它会要求输入用户名和密码才能手动登录。如果您通过 cron 作业自动执行,则可以添加 --user 和 --password 以自动登录
注意:您需要先安装 nextcloudcmd,以下是在 Linux 中安装 nextcloud 客户端的方法:https://www.addictivetips.com/ubuntu-linux-tips/install-nextcloud-sync-client-on-linux/
更多用法可以看这个链接:https://docs.nextcloud.com/desktop/2.6/advancedusage.html