Featured image of post leanote在docker环境下的定期备份

leanote在docker环境下的定期备份

一.前言

我之前尝试过不使用docker的情况下部署leanote,但是发现特别复杂,在折腾了半天后发现用docker部署非常方便,但是备份又成了难题。

二.思路

首先我们要了解两条命令

“docker exec -it 容器名字 /bin/sh -c 具体命令”这个命令可以在某个容器里执行某条命令而不进入容器

“docker cp 容器名:容器里面的文件路径 要复制到的文件路径”这条命令可以从容器里面复制出文件到系统里面

那么思路就很简单了只要打一个死循环,在docker内部导出备份之后复制到系统里面再上传到oss里面就行了,当然上传之前需要加密,加密我采用了简单有效的rar压缩来实现,rar压缩是一种以安全性出名的压缩方法。

三.准备工作

1.配置oss工具,百度有很多教程我就不当复读机了。

2.在oss里创建用于储存数据的文件夹,这里假设桶名为leanote,路径为leanote。

3.新建一个用于存储临时文件的文件夹这里假设为/oss

四.脚本实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash
while true #same to while :
do
dd=`date +%Y-%m-%d-%H-%M-%S`
docker exec -it 容器名字 /bin/sh -c "mongodump -h localhost -d leanote -o /leanote220718"
docker cp 容器名字:leanote220718 /oss
docker exec -it 容器名字 /bin/sh -c "rm -r leanote220718"
rar a $dd.rar leanote220718 -p密码
./ossutil64 cp $dd.rar oss://桶名/路径/$dd.rar
rm $dd.rar
rm -r leanote220718
sleep 1d
done

注意事项

1.请替换脚本里面所有的汉字

2.密码直接跟在p字母后面没有空格,密码最多127位

3.请使用screen实现后台运行,nohup运行会崩溃,我也不知道原因

五.写在最后

本文章参考了https://www.cnblogs.com/PrintY/p/16491510.html,感谢这位大佬的思路。

这篇网站因为很忙所以折腾了很久,可能有细节遗忘,如果无法复现请发邮件给我.

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计
© 2021 ckappblog.com 版权所有
蜀ICP备2021015106号
川公网安备 51010602001393号