繁体   English   中英

bash:如何编写Shell脚本以从DigitalOcean Droplet内的MongoDB Docker容器中通过FTP发送mongodump,以备份MongoDB数据库?

[英]bash: How do I write a shell script to sftp a mongodump from a MongoDB Docker container inside a DigitalOcean droplet to backup the MongoDB database?

我正在运行将Meteor-up部署在DO小滴上的MeteorJS Webapp。 我希望从本地计算机运行.sh偶尔获取备份。 能够带有时间戳的文件夹将是一个加号。

这是我试图通过一个.sh文件实现的目标:

在本地计算机上:

ssh root@my.droplet.address
# <prompt for password>

内滴:

docker exec -it mongodb bash

在mongodb docker中:

rm -rf dump
mongodump -h 127.0.0.1 -d app

在远程液滴上:

rm -rf dump
docker cp mongodb:/dump dump

在本地计算机上:

sftp root@my.droplet.address

在远程Droplet(sftp)中:

DATE=`date +%Y-%m-%d_%H%M%S`
get -r dump $DATE

是否可以将所有这些文件放在一个.sh文件中?

在脚本中,您可以通过以下方式运行命令:

ssh root@my.droplet.address "docker exec mongodb rm -rf dump && docker exec mongodb mongodump -h 127.0.0.1 -d app && rm -rf dump && docker cp mongodb:/dump dump && docker cp mongodb:/dump dump"

ssh root@my.droplet.address:/dump $(date +%Y-%m-%d_%H%M%S) >/dev/null 2

这就是我设法用一个.sh文件做到这一点的方法。 如果没有ssh键,这将提示您两次输入root密码。 转储文件夹将被复制到./$DATE。 其中$ DATE =本地计算机上的当前日期时间。

#!/bin/bash
DATE=`date +%Y-%m-%d_%H%M%S`
ssh root@cleanr.ivanho.me "docker exec mongodb rm -rf dump && docker exec mongodb mongodump -h 127.0.0.1 -d app && rm -rf dump && docker cp mongodb:/dump dump"

scp -r root@cleanr.ivanho.me:/root/dump $DATE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM