[Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk)

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 背景:凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等。也有通过OSS SDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSS SDK来上传文件,简单方便。

背景:

凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等。也有通过OSS SDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSS SDK来上传文件,简单方便。

步骤:

1、首先需要在阿里云注册账号,开通OSS服务,创建bucket,Bucket设置为私有读写。

2、将下面的脚本文件复制下来,保存为 .sh 脚本文件(例如:backupsites,放置在/usr/local/sbin/backupsites),其中需要把oss地址、bucket名字、Access ID、Access Key、网站目录,已经通知邮件的地址修改成自己的。

3、使用命令: chmod +x /usr/local/sbin/backupsites 对文件设置执行权限。

4、使用命令: echo “0 0 * * * /usr/local/sbin/backupsites” >>/var/spool/cron/root

设置每天零点进行备份网站数据。

脚本:

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

Date=`date +%Y-%m-%d_%H:%M:%S`
BucketTime=`date +%Y%m`
OldDate=$(date -d "-7 days" "+%Y-%m-%d")

Host="oss-cn-hangzhou-internal.aliyuncs.com"
###oss的地址###
Bucket="bucketname"
###bucket名字###
Id="xxxxxxxx"
###Access ID###
Key="xxxxxxxxxx"
###Access Key###
OssHost=$Bucket.$Host

#========================BackUp Web========================
WebSite=(
    '/www/wwwroot/xxx.com/www'
    '/www/wwwroot/xxx.com/blog'
  )
###这里是填写需要备份网站的目录信息,这里设置了五级的目录###

for WebDomains in ${WebSite[@]}; do
    WebDomainsA=`echo "$WebDomains" | awk -F "/" '{print $5}'`
    WebDomainsB=`echo "$WebDomains" | awk -F "/" '{print $4}'`
###这段是为了取值网站目录的信息###
    zip -P 密码 /tmp/WebSites.$WebDomainsA.$WebDomainsB.$Date.zip $WebDomains -r
###这里设置了zip压缩密码,备份的名称是自定义###

    if [ -s /tmp/WebSites.$WebDomainsA.$WebDomainsB.$Date.zip ] ; then

        source="/tmp/WebSites.$WebDomainsA.$WebDomainsB.$Date.zip"
        dest="$BucketTime/WebSites.$WebDomainsA.$WebDomainsB.$Date.zip"
        
        resource="/${Bucket}/${dest}"
        contentType=`file -ib ${source} |awk -F ";" '{print $1}'`
        dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`"
        stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
        signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`

        url=http://${OssHost}/${dest}
        echo "upload ${source} to ${url}"

        curl -i -q -X PUT -T "${source}" \
            -H "Host: ${OssHost}" \
            -H "Date: ${dateValue}" \
            -H "Content-Type: ${contentType}" \
            -H "Authorization: OSS ${Id}:${signature}" \
            ${url}

        if [ $? -ne 0 ];then
            echo -e ""[$HOSTNAME] WebSites $WebDomainsA.$WebDomainsB $Date Fail Upload "" | mutt -s "'[$HOSTNAME] WebSites $WebDomainsA.$WebDomainsB $Date Fail Upload'" daobidao@daobidao.com
        else
            echo -e ""[$HOSTNAME] WebSites $WebDomainsA.$WebDomainsB $Date Success"" | mutt -s "'[$HOSTNAME] WebSites $WebDomainsA.$WebDomainsB $Date Success'" daobidao@daobidao.com
            rm -rf /tmp/WebSites.$WebDomainsA.$WebDomainsB.$OldDate*
        fi

    else

        echo -e ""[$HOSTNAME] WebSites $WebDomainsA.$WebDomainsB $Date Fail Backup "" | mutt -s "'[$HOSTNAME] WebSites $WebDomainsA.$WebDomainsB $Date Fail Backup'" daobidao@daobidao.com

    fi
done
#========================BackUp Web========================

执行效果可以查看:

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
18天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
31 0
|
18天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
41 1
|
18天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
70 3
|
18天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
13天前
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
|
18天前
|
存储 Serverless 对象存储
通过FC运行脚本下载文件到OSS
本文介绍了在阿里云中使用函数计算服务(Function Compute)从URL下载文件并存储到OSS(Object Storage Service)的步骤。首先,需开通函数计算服务并创建RAM角色,授权函数计算访问OSS权限。费用详情参考官方计费概述。操作步骤包括:登录OSS控制台,使用公共模板创建执行,配置参数并运行Python脚本,脚本负责从URL下载文件并上传至指定OSS Bucket。执行成功后,文件将出现在目标OSS Bucket中。
55 0
通过FC运行脚本下载文件到OSS
|
18天前
|
分布式计算 Java 大数据
MaxCompute产品使用合集之大数据计算MaxCompute外部表映射了oss中的csv文件,看到"\N"被解析为"N",是什么原因
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
18天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
18天前
|
运维 Java Serverless
Serverless 应用引擎产品使用之数据文件(例如sdxl)超过了OSS(对象存储服务)的单个上传大小限制(5GB)如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
18天前
|
存储 网络协议 Shell
第十章 Shell编程时常用的系统文件
第十章 Shell编程时常用的系统文件