自动备份本地数据到腾讯云COS

我的需求

手里维护了一些小网站,网站跑在一台家庭内网的PVE的虚拟机上,通过内网穿透访问。网站虽小,但是备份数据,也是个刚需。主要是网站代码、相关配置文件、MySQL的数据以及一些本地文件的备份。一直想找一个现成的简单、轻量的解决方案,能够把指定目录或者文件定时自动上传到COS里面备份,但却一直没有找到,所以就只好自己动手了。

思路介绍

1、使用腾讯云的COSCMD 工具将本地要备份的文件上传到COS里面。

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

具体操作

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

执行 pip 命令进行安装

yum -y install python3 python3-pip
pip3 install coscmd

安装成功之后,用户可以通过 -v 或者 --version 命令查看当前的版本信息。

安装完成后,执行以下命令进行更新:

pip3 install coscmd -U

生成配置文件

在腾讯云创建一个存储桶,准备一个子账号,分配权限,记录子账号的SecretId和SecretKey;

然后创建配置文件,COSCMD 工具在运行前会首先从配置文件中读取运行时所需的必要信息,COSCMD 会默认从 ~/.cos.conf 中读取配置项

一个配置文件的示例如下所示:

[common]
secret_id = AKIDA6wUmImTMzvXZNbGLCgtusZ2E8mG****
secret_key = TghWBCyf5LIyTcXCoBdw1oRpytWk****
bucket = configure-bucket-1250000000
region = ap-chengdu
max_thread = 5
part_size = 1
retry = 5
timeout = 60
schema = https
verify = md5
anonymous = False

编写脚本

我本地的示例脚本backup_cos.sh,可以按照需求修改,

#!/bin/sh

datename=`date +%Y%m%d`

web_bak(){
    cd /home/wwwroot/
    tar zcf blog_${datename}.tar.gz blog/
    tar zcf intro_${datename}.tar.gz intro/
    tar zcf test_${datename}.tar.gz test/
    /usr/local/bin/coscmd upload blog_${datename}.tar.gz web/
    /usr/local/bin/coscmd upload intro_${datename}.tar.gz web/
    /usr/local/bin/coscmd upload test_${datename}.tar.gz web/
    rm blog_${datename}.tar.gz
    rm intro_${datename}.tar.gz
    rm test_${datename}.tar.gz

}

sql_bak(){
    mysqldump -uroot -pxxxxxxxx --all-databases > /data/backup/blog_${datename}.sql
    /usr/local/bin/coscmd upload /data/backup/blog_${datename}.sql sql/
    rm /data/backup/blog_${datename}.sql

}

conf_bak(){
    scp root@172.16.149.4:/data/frp_ssh/frpc.ini /data/backup/frpc_${datename}.ini
    scp root@172.16.149.4:/data/frp_ssh/frpc /data/backup/frpc_${datename}
    /usr/local/bin/coscmd upload  /data/backup/frpc_${datename}.ini conf/
    /usr/local/bin/coscmd upload  /data/backup/frpc_${datename} conf/
    rm  /data/backup/frpc_${datename}.ini 
    rm  /data/backup/frpc_${datename}
}

nginx_bak(){
    cd /usr/local/nginx/conf/
    tar zcf nginx_conf_${datename}.tar.gz vhost/
    /usr/local/bin/coscmd upload nginx_conf_${datename}.tar.gz nginx/
    rm /usr/local/nginx/conf/nginx_conf_${datename}.tar.gz
}

web_bak
sql_bak
conf_bak
nginx_bak

创建定时任务

1 9 * * * /data/backup/backup_cos.sh

创建COS的生命周期

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

|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/391
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
自动备份本地数据到腾讯云COS
我的需求 手里维护了一些小网站,网站跑在一台家庭内网的PVE的虚拟机上,通过内网穿透访问。网站虽小,但是备份数据,也是个刚需。主要是网站代码、相关……
<<上一篇
下一篇>>