言必虑其所终,行必稽其所敝

Linux利用COSFS定期备份文件到腾讯云对象存储

Linux上实现文件自动备份的工具有很多,最近因更换了腾讯云轻量服务器,干脆将以前的备份到邮箱改为备份到腾讯云COS对象存储,毕竟企业新户享有为期六个月容量为1T(根本用不完)的对象存储空间。

翻阅了腾讯云COS对象存储的文档,发现方便用于Linux上备份的工具有COSCMD和COSFS两种,前者通过命令行指令实现文件上传、下载、删除等操作,而后者则可以将对象存储挂载到本地,像访问本地磁盘一样操作对象存储。深入研究后发现还是COSFS简单粗暴,用于文件备份还是不错的。

COSFS工具安装

该工具目前最新版本为V1.0.19,建议到腾讯云官方Github获取对应系统版本的安装包,本次以我机器系统环境CentOS 7.9为例。安装过程中可能会报错提示conflicts with file from package fuse-libs-*,可以添加--force进行安装。

yum install libxml2-devel libcurl-devel -y
# 安装依赖
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs-1.0.19-centos7.0.x86_64.rpm
# 下载RPM安装包
rpm -ivh cosfs-1.0.19-centos7.0.x86_64.rpm
# 安装

COSFS工具配置

首先需要在/etc/passwd-cosfs文件中写入密钥文件,具体格式为<BucketName-APPID>:<SecretId>:<SecretKey>,同时出于安全性考虑,需对该文件设置权限为640。

echo <BucketName-APPID>:<SecretId>:<SecretKey> > /etc/passwd-cosfs
# 写入密钥到配置文件
chmod 640 /etc/passwd-cosfs
# 更改文件权限

例:

echo examplebucket-1250000000:AKIDHTVVaVR6e3****:PdkhT9e2rZCfy6**** > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

COSFS工具使用

根据官方文档给出的示例,结合实际使用,选择把地域香港、名为backup-125xxxxxxx的对象存储挂载到/root/backup目录,示例如下,具体可根据实际使用进行修改后执行。

cosfs backup-125xxxxxxx /root/backup -ourl=http://cos.ap-hongkong.myqcloud.com -odbglevel=info -oallow_other

如无报错,这时执行df -h应该就能看到容量为256T的挂载点。

COSFS开机挂载

为了避免每次服务器重启都需要重新挂载,还需要设置开机自动挂载对象存储,这里使用官方的方法,设置完成后执行mount -a,如果报错可尝试安装Fuse库。

cosfs#backup-125xxxxxxx /root/backup fuse _netdev,allow_other,url=http://cos.ap-hongkong.myqcloud.com,dbglevel=info
# 设置开机自动挂载
yum install fuse
# 安装Fuse库

至此,已经成功的将对象存储挂载到服务器。

备份脚本编写

整理下备份流程,首先创建一个临时目录/tmp/backup,然后将需备份的文件拷贝到该目录下,再进行压缩保存到/root/backup,为避免服务器存储空间被占满,还需要在备份完成后清空/tmp/backup并对备份存储目录/root/backup中保存时间超过14天的文件进行删除操作,具体代码如下,可根据实际需求进行修改后保存到服务器中进行使用。

#!/bin/sh
mkdir -p /tmp/backup
# 创建临时目录
cp -r /data/wwwroot /tmp/backup
# 拷贝需备份的数据

tar -zcPvf /root/backup/$(date +%Y%m%d).tar.gz /tmp/backup
 #压缩备份文件

rm -rf /tmp/backup
 # 删除临时目录

cd /root/backup
find ./ -mtime +14 -name "*.tar.gz" -exec rm -rf {} \;
#删除改文件夹下超过14天的文件

设置自动备份

我选择在每天凌晨四点进行文件备份,这里执行crontab -e编辑Crontab配置文件,将以下内容写入,具体时间以及备份脚本位置可根据实际需求进行修改。

0 4 * * * /root/backup.sh /dev/null 2>&1

实现备份到对象存储的方法有很多,这里仅介绍我目前使用的,代码简单已修改,无需过多配置即可使用。

参考资料

Linux下定时备份文件 - 叫我星宇 - 博客园

对象存储 COSFS 工具 - 常见问题 - 文档中心 - 腾讯云