我是 unison 的新手,正在尝试在一个简单的 shell 脚本中使用它的选项,但是在执行脚本时它们似乎被忽略了,导致两个服务器之间无法同步任何更改。
我的外壳脚本:
#!/bin/bash
# set paths / dirs
_paths="/var/www/html/ \
"
# binary file name
_unison=/usr/bin/unison
# Log in to remote server without a password
source $HOME/.keychain/$HOSTNAME-sh
# server names
# sync node1.example.com with rest of the servers in cluster
_rserver="node2.example.com"
# sync it
for r in ${_rserver}
do
for p in ${_paths}
do
${_unison} -batch -time -owner -group "${p}" "ssh://${r}/${p}"
done
done
如果我删除这些-time -owner -group
选项,脚本就会同步所做的更改。
如果我将选项添加到~/.unison/default.prf
文件中,则脚本将成功执行。例如
# Unison preferences file
prefer=newer
times=true
group = true
owner = true
但是,由于我有不同的脚本被不同的 cron 作业调用,因此我更愿意在脚本本身中而不是首选项文件中声明选项。
对于我做错的事情有什么建议吗?
答案1
看起来你必须在定义根目录之后放置 unison 选项:
格式如下:链接到 unison 手册(阅读原文!)
unison root1 root2 [options]
所以我的代码应该是:
${_unison} -batch "${p}" "ssh://${r}/${p}" -times -owner -group
一旦将选项放在这里,脚本就会执行而不会出现任何错误。