通过Shell和Python实现文件备份到腾讯云COS

酷酷的白 11,052 浏览 0

最近新入手了台廉价vps,服务器中装了个Docker,在docker中装了一些仅供自己使用的一些服务程序,其中有些程序会使用到一些MySQL或者是sqlite等数据库,这些数据库文件都是通过挂载的方式实现的,为了以防万一决定做个方案备份一些重要的文件,于是乎又可以水一篇文章了[aru_17]。

 

在实现这一解决方案中使用到的技术有Shell和Python,为什么不直接用shell呢? 因为我比较懒吧,毕竟腾讯云官方提供了sdk就可以直接使用。还有为什么选择腾讯云而不是其他方式? 本人再用的存储服务有腾讯和阿里的,没想什么,就直接用腾讯云了呗[aru_71]。

什么是腾讯云Cos?

通过Shell和Python实现文件备份到腾讯云COS

腾讯云COS与阿里云的OSS都是提供对象存储的服务,(即文件存储)。比如图片,压缩包,安装包,视频,各种网站静态文件等(反正绝大多数格式的文件都能上传,而且还是免费额度,对我来说已经够用了)。

开始咯

首先打开腾讯云官网,没有账号就注册一个腾讯云账号然后实名认证什么的,这里就不在赘述了

然后打开腾讯云COS链接:https://cloud.tencent.com/product/cos

或者直接打开腾讯云控制面板直接开启:https://console.cloud.tencent.com/cos

打开页面点击存储桶列表,然后在点击创建存储桶,之后会弹出一个创建提示框

通过Shell和Python实现文件备份到腾讯云COS

然后根据要求填写对应的名称和所属位置,位置推荐选离自己较近的,名称一经填写就不能更改

通过Shell和Python实现文件备份到腾讯云COS

后面的几步,一般默认即可,有个加密选项,加不加密主要看你选择

创建成功后就可以在存储桶列表中看到它了,搞完这一步之后就可以搞服务器效果的了

这时在左侧侧边栏最下面找到SDK下载,并点进去,这里腾讯云提供很多语言的SDK,这里我们选择python

点击快速入门或者直接下载也可以,直接下载会打开这个链接:https://github.com/tencentyun/cos-python-sdk-v5

此时,您需要确保自己的服务器已经安装了python 如果你使用别的语言,就按你的情况来吧,我这里只说Python的

怎么安装python自行百度吧,网上很多(我装的python3版本的,我也推荐装3版本的)

在服务器之后在服务器运行以下指令:

pip install -U cos-python-sdk-v5

如果未配置pip环境变量的就使用这个命令:

python3 -m pip install -U cos-python-sdk-v5

出现这个样子时表示安装成功了

通过Shell和Python实现文件备份到腾讯云COS

安装成功后,新建一个文件,可以使用vim一气呵成,终端执行 vim backup.py ,然后按下i改为插入模式,之后把以下代码粘贴上去

点击查看代码

然后在代码中填写与自己对应的信息,其中backet要填写存储桶的名称,如000-1557446978,可以在存储桶列表中查看,所属地也可以在这里看到

通过Shell和Python实现文件备份到腾讯云COS

secret_id = '' # 替换为用户的 SecretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi 
secret_key = '' # 替换为用户的 SecretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi

修改完成后按键盘ESC,在输入 :backpu.py,之后在输入wq保存并退出,此时可以运行测试一下使用可以正常使用这脚本,在运行这个脚本时需要两个参数,分别存储的类型和文件所在路径地址以及文件过期时间(按天计算),如下所示

 python3 backup.py database /root/shell/test.cn.gz 3

之后可以查看一下存储桶的文件列表中是否已存在这个文件,如果存在即表示可以正常使用。

前面的OK了就可以继续编写shell文件了

在backup.py的同级目录下运行vim backup.sh; 即可创建文件和编辑

点击查看完整代码

粘贴进去之后按esc在输入:wq保存并退出,然后在终端输入运行./backup.sh,此时会显示使用帮助信息,如下图所示:

通过Shell和Python实现文件备份到腾讯云COS

如果输入之后没有出现这个,可能是因为权限不足,使用以下语句为程序设置权限

chmod 755 backup.sh

注:如果是Ubuntu系统需要在前面加sudo

至此,基本上是可以了

测试及使用

现在可以提供命令来进行测试,比如要上传某文件目录或者是网站目录。可以使用以下示例

./backup.sh file test.cn /www/wwwroot/test.cn /temp/test.cn y

其中,backup.sh后面的file表示,这是一个文件目录或者是一个网站目录,后面的test.cn 可以是域名也可以是其他的,/www/wwwroot/test.cn这个为要备份的网站目录,/temp/test.cn 这是一个临时存放目录,备份同时会在这里生成一个tar.gz的压缩文件;后面的y是把本地服务器上的临时文件也删除的意思,建议使用,不填写默认不删除。运行命令后查看腾讯云存储桶,查看文件是否上传成功了。

备份数据库原理也是差不多,如下命令:

./backup.sh database dbname user 123456 /temp/ y

其中,backup.sh 后面的database表示数据库,第一此时为数据库名,第二个为数据库用户名,第三个为数据库密码,第四个为临时存放文件目录,最后还可以添加一个y参数,这个参数和上面文件的参数是一样的,都是删除临时文件的,建议使用。

如果以上测试都没有问题就可以进行下一步了。

定时任务

为了每天(或周期)可以定时备份文件,使用需要添加到corn定时任务中,如果还未安装,请自行安装

使用命令编辑

crontab -e

和vim编辑器是一样的,按键盘i插入内容,插入到最后一行,写入完成后按esc 在输入 :wq 保存并退出

重启corn

systemctl restart crond

查看任务列表

crontab -l

通过Shell和Python实现文件备份到腾讯云COS

上图中 >> 号后面的是为了方便输出运行日志,可不用配置,直接使用即可。

然后就O啦。有说明问题可以在下方评论哦[aru_43]

发表评论 取消回复
表情 图片 链接 代码

分享