在 shell 脚本中使用 unison 选项?

在 shell 脚本中使用 unison 选项?

我是 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

一旦将选项放在这里,脚本就会执行而不会出现任何错误。

相关内容