【问题标题】:meteor with MUP: mongodump in bash script used in a cronjob带有 MUP 的流星:在 cronjob 中使用的 bash 脚本中的 mongodump
【发布时间】:2021-07-26 01:41:13
【问题描述】:

我正在使用 MUP 运行 Meteor 应用程序进行部署。因此,我在服务器上创建了一个备份脚本,如下所示:

#!/bin/sh

#export mongodump
docker exec -it mongodb mongodump --archive=/root/mongodump.gz --gzip

#create datestring
filedate=$(date +%Y-%m-%d_%H-%M-%S)

#put dump export in file
docker cp mongodb:/root/mongodump.gz mongodump_$filedate.gz

到目前为止一切正常,一切正常。

当我将脚本添加到 cronjob 时,奇怪的问题就开始了

0 1 * * * /home/user1/backup.sh

这也有效,即 mongodump.gz 已正确添加。但是,无论出于何种原因,只要 cronjob 创建备份,备份总是相同的(匹配 SHA-256-HASH)。当我再次手动运行备份脚本时,转储的 SHA-Hash 和文件大小会发生变化。下次调用 cronjob 备份时,和之前创建的备份一样。

有什么想法吗?

【问题讨论】:

  • 你确定它可以运行,还是你只是认为/root/mongodump.gz文件永远不会被删除?

标签: bash meteor cron backup mup


【解决方案1】:

很难说您的备份脚本可能出了什么问题,但是对于相同的设置(通过 cronjob 备份一个部署 mup 的流星数据库),我使用这个脚本并且它运行良好:

#!/bin/bash

# fail on error
set -e

# NOTE: no -it in docker command, see
# https://stackoverflow.com/questions/43099116/error-the-input-device-is-not-a-tty
docker exec mongodb mongodump -d mydb -o /data/db/ --gzip -- -j 1
mkdir -p /home/ubuntu/backup/

sudo rm -rf /home/ubuntu/backup/mydb
sudo mv /var/lib/mongodb/mydb /home/ubuntu/backup
sudo chown ubuntu:ubuntu -R /home/ubuntu/backup/mydb

有几点需要注意:

  • 正如注释所示,我必须从 docker 命令中删除 -it 以避免终端不是 tty 的问题,请参阅 here
  • 无需使用docker cp,因为mup 使用容器内的持久文件夹,可以直接从主机访问。

【讨论】:

  • 非常感谢,这成功了!很好的提示,MUP 中的 docker 正在创建一个可以在这里方便使用的持久化文件夹!
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 2016-09-27
  • 2015-02-16
  • 1970-01-01
  • 2022-10-17
相关资源
最近更新 更多