安装阿里云OSS
安装官方文档,下载并安装程序。命令如下:
sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
安装过程中需要使用解压工具(unzip、7z)对包进行解压,请提前安装其中一个解压工具,安装完成后ossutil会安装在/usr/bin/目录下。
配置ossutil
输入配置命令:
ossutil config
根据提示设置配置文件路径,文件名可以包括路径(默认为:/root/.ossutilconfig,回车则使用默认路径,建议回车默认!!!)
然后设置语言,请输入语言CH或者EN(注意大写),工具使用的语言默认和操作系统一致,config命令设置成功后该配置项才会生效。
确认语言后,输入最重要的AccessKey信息,最后一个stsToken可以不填,登录阿里云账号,从右上角头像获取相关信息,如图:
根据提示进行设置,复制粘贴即可,后续如果还需要修改配置文件,可以在[/root/.ossutilconfig]中修改:
[Credentials] language=CH accessKeyID=******wwwliblogcn****** endpoint=https://oss-cn-beijing.aliyuncs.com accessKeySecret=********wwwliblogcn*****
这里特别说明一下关于[endpoint]的region设置,第一次安装配置后就出错了,不管怎么上传都一直弹出错误提示,原因是这个设置不对,大概是这样的:
错误:oss:服务返回错误:StatusCode=400,ErrorCode=InvalidBucketName,ErrorMessage="指定的存储桶无效。",RequestId=65F1345AF15BB23733AEA62D,Ec=0015-00000001
附上阿里云公有云OSS Region与Endpoint对照表:点击链接直达,找到后需要在后面加上[ ]或者[ ]。
到此阿里云OSS的安装基本就完成了,最后我们来验证一下ossutil是否安装成功,命令如下:
ossutil
如果屏幕上输出了ossutil支持的命令,则说明ossutil安装成功,如图所示,有很多文件,只抓取了上面一部分:
看到这个内容证明安装已经完成,功能也已经集成。接下来我们修改脚本文件,找到昨天设置的【backup.sh】文件。如果不知道昨天写了什么,可以查看《记录Linux定时备份MySQL数据库文件,详细图文教程,仅限新手和专家》,如果懒得看,就自己新建一个脚本文件就行了。相关代码如下:
#!/bin/bash # 备份的数据库名 DB_NAME="zbp_1012" # 设置备份路径 BACKUP_PATH="/www/b" OSS_BUCKET="OSSbucket名称" OSS_PREFIX="OSS存储目录" # 生成备份文件名 BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql" # 使用mysqldump备份数据库 /usr/bin/mysqldump $DB_NAME > $BACKUP_PATH/$BACKUP_FILE # 上传备份文件到OSS /usr/bin/ossutil64 cp $BACKUP_PATH/$BACKUP_FILE oss://$OSS_BUCKET/$OSS_PREFIX/$BACKUP_FILE # 删除旧的备份文件(保留最近3天的备份) find $BACKUP_PATH -type f -mtime +3 -name "backup_*.sql" -exec rm {} \; # 删除旧的远程备份文件(保留最近3天的备份) find_and_delete_old_backups() { local backup_path="$1" local current_date=$(date +%s) ossutil ls "$backup_path" | awk 'NR > 1 {print $2}' | while read -r line; do local file_date=$(echo "$line" | sed 's/.*backup_\([0-9]*\)_.*/\1/') local file_age=$((current_date - file_date)) if [ $file_age -gt 259200 ]; then ossutil rm "$line" fi done } find_and_delete_old_backups "$BACKUP_PATH"
比昨天的本地备份多了几个远程上传和删除的命令,备份路径改成你实际需要的路径,[/usr/bin/ossutil64]路径就可以
which ossutil
查询的时候一定要把返回的路径替换成你自己的,一般默认的好像都是一样的。全部修改完成后,保存文件,运行以下命令:
sed -i 's/\r$//' /www/b/backup.sh
该命令会使用sed工具将脚本文件中的DOS格式换行符(\r)替换为空格,从而转换为Unix格式。命令运行后不会有任何提示。然后运行脚本,命令代码:
bash /www/b/backup.sh
将上面两个路径替换成你的实际路径,然后看图:
如果效果如图,就是正常的。本地备份和OSS远程备份已经完成,进度随时可以看到,上传速度不是很快,但是够用了。好了,到此为止Linux的定时备份功能和远程OSS备份功能已经完成了,有些人可能用的是腾讯云或者其他云服务,代码基本一样,但是安装云存储可能会有些不同,自己研究一下吧。哦对了,有些人可能会有疑问,至少我一开始就有这个疑问,就是我明明设置了只存3份,为什么云存储和本地会有这么多文件呢?原因是我们预留了天数,比如我们在代码里设置了3天,那么我们今天手动测试了N次备份,所以定时任务还是会按计划备份的,但是这些都是以天为单位的,不会超过3天,所以可能会有多个,过期之后应该就正常了。我们拭目以待吧。 如果有问题我们以后再讨论,再见~~~