对于网站或程序的运行过程中,如果不做好数据备份工作,由于自己的勿操作或者其他非法操作出现数据丢失的情况,数据的丢失将是一场灾难。
本文将教你使用 阿里云 OSS 对象存储 在 Linux 系统上实现数据文件的定时备份。
前提条件
已准备好 OSS 对象存储,本文将不会阐述如何去创建 阿里云 OSS 对象存储 服务,读者可以自行查阅资料。
当前操作系统:CentOS 7,其他系统安装方式类似。
开始
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 表达式的配置,请自行查阅相关资料。
Linux 定时备份文件并上传至阿里云 OSS