自动备份本地文件、数据库到COS中

2022-03-05 21:16:08 浏览数 (1)

我的需求

手里维护了一些小网站,网站跑在一台最低配的轻量应用服务器上,数据库是自建的MySQL。网站虽小,但是备份数据,也是个刚需。主要是MySQL的数据库备份以及一些本地文件的备份。一直想找一个现成的简单、轻量的解决方案,能够把指定目录或者文件定时自动上传到COS里面备份,但却一直没有找到,所以就只好自己动手了。

思路介绍

整体思路很简单,写一个shell脚本,利用crontab定时运行,功能就两个:1、打包指定的目录,上传到COS;2、导出MySQL数据,上传到COS。另外在COS里面设置过期规则,比如30天后删除旧得备份。

具体操作

下面,简单记录相关步骤:

注意:这里的操作步骤只是一个参考,具体备份的文件夹路径、备份的数据库等内容可根据实际情况调整。

1、安装coscli:

代码语言:shell复制
wget https://github.com/tencentyun/coscli/releases/download/v0.10.2-beta/coscli-linux
mv coscli-linux /usr/bin/coscli
chmod 755 /usr/bin/coscli

这里如果无法下载,或者下载缓慢,你懂的。

2、 准备一个存储桶,准备一个子账号,分配权限,记录子账号的SecretId和SecretKey,运行coscli,首次运行coscli,根据提示填写相关信息,其中的session token不填。

3、新建一个脚本backup.sh,这里假设我们备份的目录为/etc/my.cnf.d/要备份的数据库名为mysql

代码语言:shell复制
#!/bin/bash

cd /root/

tar -czvf my.cnf.d.tar.gz /etc/my.cnf.d/ 
mysqldump mysql > mysql.sql
tar -czf mysql.sql.tar.gz mysql.sql

coscli cp my.cnf.d.tar.gz cos://backupcos/back/`date ' %Y%m%d'`/my.cnf.d.tar.gz
coscli cp mysql.sql.tar.gz cos://backupcos/back/`date ' %Y%m%d'`/mysql.sql.tar.gz

rm -f my.cnf.d.tar.gz mysql.sql.tar.gz mysql.sql

4、chmod a x backup.sh给脚本添加运行权限,运行crontab -e设置备份脚本每天运行一次:

代码语言:txt复制
0 0 * * * /root/backup.sh > /dev/null 2>$1 &

5、 最后在存储桶中,设置“基础配置/生命周期”中,设置备份过期时间。(这里设置,30天后,前缀为back的文件将会自动删除)

image-20220305204654132.pngimage-20220305204654132.png

0 人点赞