gpt4 book ai didi

bash - meteor 与 MUP : mongodump in bash script used in a cronjob

转载 作者:行者123 更新时间:2023-12-04 07:42:44 27 4
gpt4 key购买 nike

我正在使用 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 备份时,它与之前创建的备份相同。
任何想法这里发生了什么?

最佳答案

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

#!/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
有几点需要注意:
  • 正如注释所示,我必须删除 -it从 docker 命令避免终端不是 tty 的问题,请参阅 here .
  • 没有必要使用docker cp ,因为 mup 使用容器内的一个持久文件夹,可以直接从主机访问。
  • 关于bash - meteor 与 MUP : mongodump in bash script used in a cronjob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67372405/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com