七牛云简单高可用的备份脚本

由 夏日冰菓 发布

告诉你们我是怎么玩空间的

qinglong

七牛云免费提供10G的空间已经是多年前的事了,虽然空间不大但是作为一个备份空间还是绰绰有余,免费而且稳定。这次来教教大家怎么无脑备份自己的数据到七牛云。全程自动,可以设置定时推送,不怕数据丢失问题,而且还加密,即使是七牛官方也无法知道数据的内容,脚本简单高效,不需要安装任何程序就能胜任工作,确保数据安全无忧,至少我几个服务器的重要数据是这么备份的,这里跳过七牛云注册,准备好你的AK/SK码和空间名,开始吧。

第一步、下载官方的推送工具qshell

七牛贴心得适配了多个平台,可以根据自己所需下载,免安装,下载就能用

支持平台链接
Windows X86下载
Windows amd64下载
Windows arm下载
Linux X86下载
Linux amd64下载
Linux arm下载
Linux arm64下载
Mac OS amd64下载
Mac OS arm64下载

该工具由于是命令行工具,所以只需要从上面的下载链接下载后即可执行使用,所以找个地方放好,一会需要调用。

第二步、创建脚本

创建一个脚本文件,我这里命名未backup7n.sh

vim /opt/backup7n.sh

编写脚本backup7n.sh脚本

#!/bin/bash
# 运行脚本之前,确保已经添加账号,命令:qshell account <AK> <SK> <BUCKET>
source /etc/profile
export PATH=$PATH:/opt/qshell
source ~/.bashrc

# 备份名称,用于标记,同时也是七牛的目录名
BACKUP_NAME="aml_one"
# 备份目录,多个请空格分隔
BACKUP_SRC="/disk1/ /disk2"
# 备份文件压缩密码
BACKUP_FILE_PASSWD="passwd"
# 七牛空间名
BUCKET="bucket"
# 副本数量
COPY="3"
# 七牛程序位置
SCRIPT_DIR="/opt/qshell"
# 备份文件临时存放目录,一般不需要更改
BACKUP_DIR="/tmp/backup7N"

## 获取时间,精确到秒,统一秒内上传的文件会被覆盖
NOW=$(date +"%Y%m%d%H%M%S") 
mkdir -p $BACKUP_DIR
echo "获取时间"

# 打包文件
echo "开始打包."
BACKUP_FILENAME="$BACKUP_NAME-backup-$NOW.zip"
zip -q -r -P $BACKUP_FILE_PASSWD $BACKUP_DIR/$BACKUP_FILENAME $BACKUP_SRC
echo "打包完成.."

# 上传到七牛云
$SCRIPT_DIR/qshell rput "$BUCKET" "$BACKUP_NAME/$BACKUP_FILENAME" "$BACKUP_DIR/$BACKUP_FILENAME"
if [ $? -eq 0 ];then
     echo "上传完成...."
else
     echo "!上传失败,重新尝试!"
fi

# 副本数量检查,超过限制副本将会被删除
FILELIST=`$SCRIPT_DIR/qshell listbucket2 --prefix aml_one/ $BUCKET | awk '{print $1}' | tee $BACKUP_DIR/7nlist | wc -l`
if [[ $FILELIST -gt $COPY ]];then
     echo "超过副本数量....."
     DELETE=`head -n 1 $BACKUP_DIR/7nlist`
    $SCRIPT_DIR/qshell delete lincloud $DELETE
    echo "删除多余副本......"
    echo "任务完成"
else
     echo "任务完成"
fi

# 删除本地的临时文件
rm -rf "$BACKUP_DIR"

这个脚本可以自动打包和加密文件夹,相关的配置写的非常清楚,包括七牛云的副本控制的数量,根据自己的需要修改即可,值得注意的是七牛的程序位置需要就是刚刚下载qshell的位置

第三步、初始化并且运行

在开始之前,需要赋予运行权限,然后添加七牛云的账号和空间信息,这里需要用到刚刚记录下来的AK/CK密钥和空间名

chmod +x qshell
qshell account <AK> <SK> <BUCKET>

再赋予刚才创建脚本的运行的权限

chmod +x backup7n.sh

添加备份任务和运行测试

辑 /etc/crontab 文件,添加定时任务

0 2 */2 * * root /opt/backup7n.sh 2>&1 | tee /opt/backup7n.log

该任务自动运行之后会生成日志文件

手动运行一次:

bash /opt/backup7n.sh

整体来说能满足基本的需求,脚本能根据配置文件加密了文件并且上传到七牛空间,并且读取了七牛空间的文件列表,如果备份副本超过一定的数量之后会自动删除多余的副本,保证空间高效可用状态。脚本可以根据自己的需求更改,对于不需要控制副本的可以把副本数量改为9999


暂无评论

发表评论