Linux 定时备份文件并上传至 OSS


分享4006 阅0 评

对于网站或程序的运行过程中,如果不做好数据备份工作,由于自己的勿操作或者其他非法操作出现数据丢失的情况,数据的丢失将是一场灾难。

本文将教你使用 阿里云 OSS 对象存储 在 Linux 系统上实现数据文件的定时备份。

前提条件

已准备好 OSS 对象存储,本文将不会阐述如何去创建 阿里云 OSS 对象存储 服务,读者可以自行查阅资料。

当前操作环境

CentOS 7.2

其他系统安装方式类似。

开始

1. 安装 OSS 命令行工具

这里使用阿里云官方提供的命令行工具:ossutil

wget -O /usr/local/bin/ossutil64 http://gosspublic.alicdn.com/ossutil/1.7.0/ossutil64

// 添加执行权限
sudo chmod 755 /usr/local/bin/ossutil64

其他系统安装 ossutil:https://help.aliyun.com/document_detail/120075.html

2. 配置 OSS 命令行工具

ossutil64 config

提示:执行命令后,前两个配置直接回车即可,后面的 endpoint、accessKeyID、accessKeySecret 配置项填写自己的 OSS 连接信息即可。

3. 编写备份脚本

vim /data/script/backup.sh
#!/bin/sh

echo "启动备份脚本..."

# 临时目录
tmpDir=/data/script/backup

# 创建临时目录
mkdir $tmpDir

now=$(date +"%Y%m%d%H")
# 文件名前缀
fileNamePrefix=data-backup
# 文件名,格式:前缀+时间,如:data-backup-2021011521.tar.gz
fileName=$fileNamePrefix-$now.tar.gz
filePath=$tmpDir/$fileName
# 备份文件在OSS上的存储路径
ossDir=oss://ossname/backup

echo "正在打包 $filePath ..."
tar -zcvf $filePath /data/web

echo "开始上传 $fileName 到OSS"
ossutil64 cp $filePath $ossDir/$fileName

echo "删除OSS上旧的备份文件 $fileNamePrefix"
# 这里只保存最后一次备份
ossutil64 rm $ossDir --include "$fileNamePrefix*" --exclude "$fileName" -r -f

echo "删除本地临时打包文件 $fileName"
rm -rf $filePath

echo "备份完毕"

根据你当前的情况设置脚本中的参数 tmpDir、fileNamePrefix、ossDir 以及 tar 打包路径

给脚本添加执行权限

sudo chmod 755 /data/script/backup.sh

4. 配置定时任务

使用 crontabs 定时执行脚本,如果你的系统中未安装,可执行命令

sudo yum -y install cronie crontabs

添加定时任务

crontab -e 

// 加入执行计划
30 03 * * * /data/script/backup.sh

30 03 * * * 表示每天凌晨3点30分执行,关于 cron 表达式的配置,请自行查阅相关资料。

最后更新 2021-06-02
评论 ( 0 )
OωO
隐私评论