ZFS 发送脚本在手动运行时有效,但在 Cron 中无效(已尝试常见解决方案)

ZFS 发送脚本在手动运行时有效,但在 Cron 中无效(已尝试常见解决方案)

发送端脚本如下:

#!/bin/sh

#Variables

bigdata=vid-zfs-live/bigdata

today=`gdate +%m-%d-%y`

yesterday=`gdate -d'yesterday' +%m-%d-%y`


#Actions

zfs snapshot -r "$bigdata"@"$today"

zfs send -i "$bigdata"@"$yesterday" "$bigdata"@"$today" | nc -w 700 192.168.10.11 8024

发送端的Cron条目如下:

30 0 * * * /scripts/zfssendBigData.sh > /tmp/cron1.log

接收端脚本如下:

#!/bin/sh

/usr/bin/nc -l -p 8024 | zfs receive -F vid-zfs-bak/bigdata

接收端的 Cron 条目如下:

 29 0 * * * /scripts/zfsreceiveBigData.sh > /tmp/cron2.log

cron1.log和cron2.log都是空的。

接收端的mailx显示:

Your "cron" job on atm-frontend-02
/scripts/zfsreceiveBigData.sh

produced the following output:

nc: -w has no effect with -l
cannot receive: failed to read from stream

值得注意的事项:

快照部分工作正常,快照已创建。所以我知道脚本正在运行。具体来说,是发送/接收不起作用。

我尝试对所有程序使用绝对路径,例如 /usr/bin/nc、/usr/sbin/zfs 等。

我验证了两个系统上的时钟彼此相差在10秒以内。

两个系统都是 Solaris 11.3

答案1

我建议从发送端执行脚本并使用它来触发接收部分。在两端启动 cron 作业毫无意义...

您可以使用 ssh 从本地服务器向远程服务器发出命令。

相关内容