【发布时间】:2021-11-16 22:09:53
【问题描述】:
我正在编写一个使用 mongodump 备份 mongodb 实例的 bash 脚本。脚本有多个步骤,只有在转储成功时才会运行,所以我需要一个错误代码来告诉我备份是否成功运行。我一直在使用以下内容:
for i in $(seq 1 30); do
mongodump --host mongodb -u user -p password --archive | gzip > backup.gz
check=$?
echo "$check"
if [ "$check" -eq "0" ]; then
break
fi
done
if [ "$check" -eq "0" ]; then
echo "do something with the file"
fi
这很好用,当 mongodump 实际上成功时,但问题是,即使 mongodump 失败,它也会返回 0。这似乎与我从他们的文档 here 中理解的相反。
例如,如果我通过拔下网络电缆断开此服务器与数据库的连接,则会失败并显示错误 Failed: can't create session: could not connect to server: server selection error: server selection timeout。但它的返回码也是0,就像成功一样。
也许应该是这样,但是如果网络错误的错误代码与成功相同,我该如何检查网络错误?
或者说成功来自于 gzip?这会让我产生疑问,为什么 mongodump 即使在网络故障时也会创建备份文件?
【问题讨论】:
标签: mongodb bash pipe exit-code mongodump