发送端脚本如下:
#!/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 从本地服务器向远程服务器发出命令。