从零开始在centos搭建博客(二)

从零开始在centos搭建博客(二),第1张

本篇为备份篇。

因为装的东西不多,所以需要备份的只有mysql和wordpress的文件夹。

备份mysql

mysql备份命令

使用mysqldump命令,格式如下:

# 这是格式
mysqldump -u${username} -p${dbrootpwd} --databases ${DBname} > ${DumpFile}
# 这是例子
mysqldump -uroot -proot --databases wordpress > /home/backup.sql

使用${}代表的是变量,请自行替换

username:数据库用户名

dbrootpwd:数据库用户的密码

DBname:需要备份的数据库

DumpFile:输出的文件路径+文件名

搭配docker使用

因为mysql使用的是docker安装的,服务器所在的Centos中是没有mysql的相关命令的,执行命令需要到mysql的docker容器中。

# 这是格式
docker exec -it ${container} ${sqlCmd}
# 这是例子
docker exec -it 123321 mysqldump -uroot -proot --databases wordpress > /home/backup.sql

使用${}代表的是变量,请自行替换

container:docker容器的别名或id

sqlCmd:需要执行的备份命令

备份脚本

此脚本是基于oneinstack修改的

逻辑是:

mysqldump生成xxx.sql文件压缩xxx.sql为xxx.tgz删除xxx.sql和旧的压缩文件

新建db_bk.sh文件,以下是内容:

#!/bin/bash
# 引用同目录下的options.conf文件
. ./options.conf

# 传递参数
DBname=
# 日志
LogFile=${backup_dir}/db.log
# 临时文件
DumpFile=${backup_dir}/DB_${DBname}_$(date +%Y%m%d_%H).sql
# 新的压缩文件
NewFile=${backup_dir}/DB_${DBname}_$(date +%Y%m%d_%H).tgz
# 旧的压缩文件
OldFile=${backup_dir}/DB_${DBname}_$(date +%Y%m%d --date="${expired_days} days ago")*.tgz
# 备份目录不存在则创建
[ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}

# 使用mysql的show databases判断数据库是否存在
DB_tmp=`docker exec -it mysql mysql -uroot -p${dbrootpwd} -e "show databases\G" | grep ${DBname}`
[ -z "${DB_tmp}" ] && { echo "[${DBname}] not exist" >> ${LogFile} ;  exit 1 ; }

# 删除旧的压缩文件
if [ -n "`ls ${OldFile} 2>/dev/null`" ]; then
  rm -f ${OldFile}
  echo "[${OldFile}] Delete Old File Success" >> ${LogFile}
else
  echo "[${OldFile}] Delete Old Backup File" >> ${LogFile}
fi

# 判断新的压缩文件是否已存在
if [ -e "${NewFile}" ]; then
  echo "[${NewFile}] The Backup File is exists, Can't Backup" >> ${LogFile}
else
	# 生成临时备份文件
  docker exec -it mysql mysqldump -uroot -p${dbrootpwd} --databases ${DBname} > ${DumpFile}
  # 进入到备份目录
	pushd ${backup_dir} > /dev/null
	# 压缩临时文件
  tar czf ${NewFile} ${DumpFile##*/} >> ${LogFile} 2>&1
	# 输出日志
  echo "[${NewFile}] Backup success ">> ${LogFile}
	# 删除临时文件
  rm -f ${DumpFile}
	# 退回之前的目录
  popd > /dev/null
fi

以下是options.conf文件的部分内容

# mysql相关
backup_dir=/home/backup
dbrootpwd='root'
expired_days=5

执行脚本

# 这是格式
./db_bk.sh #{DBname}
# 这是例子,数据库名为wordpress
./db_bk.sh wordpress
备份wordpress

编写脚本

备份wordpress其实只需要备份wordpress所在的html目录即可。

所以脚本也很简单,就是压缩相关目录,删除旧的压缩文件。

新建website_bk.sh文件,以下是内容:

#!/bin/bash

. ./options.conf

# 变量定义
WebSite=
LogFile=${backup_dir}/web.log
NewFile=${backup_dir}/Web_${WebSite}_$(date +%Y%m%d_%H).tgz
OldFile=${backup_dir}/Web_${WebSite}_$(date +%Y%m%d --date="${expired_days} days ago")*.tgz
# 备份文件夹不存在则创建
[ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}
# 需要备份的目录不存在则退出
[ ! -e "${wwwroot_dir}/${WebSite}" ] && { echo "[${wwwroot_dir}/${WebSite}] not exist" >> ${LogFile} ;  exit 1 ; }

# 判断大小,如果小于1024m
if [ `du -sm "${wwwroot_dir}/${WebSite}" | awk '{print }'` -lt 1024 ]; then
  if [ -n "`ls ${OldFile} 2>/dev/null`" ]; then
    rm -f ${OldFile}
    echo "[${OldFile}] Delete Old File Success" >> ${LogFile}
  else
    echo "[${OldFile}] Delete Old Backup File" >> ${LogFile}
  fi

	# 如果文件已存在,则不重复备份
  if [ -e "${NewFile}" ]; then
    echo "[${NewFile}] The Backup File is exists, Can't Backup" >> ${LogFile}
  else
    pushd ${wwwroot_dir} > /dev/null
    tar czf ${NewFile} ./${WebSite} >> ${LogFile} 2>&1
    echo "[${NewFile}] Backup success ">> ${LogFile}
    popd > /dev/null
  fi
else
  rsync -crazP --delete ${wwwroot_dir}/${WebSite} ${backup_dir}
fi

以下是options.conf文件的部分内容

backup_dir=/home/backup
wwwroot_dir=/home/docker-workspace/wordpress
website_name=html
expired_days=5

执行脚本

./website_bk.sh html
备份OSS

使用的是ossutil

以下是相关命令:

# 上传文件
./ossutil64 cp -f file_url cloud_url
# 删除命令
./ossutil64 rm oss://bucketname[/prefix]
定时执行

备份的脚本需要定时执行,这里用的是crontab。

安装

一般centos都有安装crontab,检查是否安装:

rpm -qa | grep crontab

安装命令:

yum -y install vixie-cronyum -y install crontabs

使用

crontab -e进入编辑页或者vi /etc/crontab

区别在于:前者配置是针对当前用户的,后者是针对系统的

添加执行脚本的定时任务:

# 这是格式
${cron} ${cmd}
# 这是例子
0 0 * * 1 /home/xxx.sh > /dev/null 2>&1 

使用${}代表的是变量,请自行替换

cron:cron表达式,注意,crontab所使用的cron表达式,与java使用的cron有所区别,是不包含秒的,看 /etc/crontab的注释就知道了

cmd:需要执行的命令

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/yw/928860.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-17
下一篇2022-05-17

随机推荐

  • 伦敦国王学院研究生雅思是怎样的要求

    伦敦国王学院是伦敦大学的创校学院之一,创办于1829年,是英国金三角名校和罗素大学集团成员。伦敦大学国王学院主要是以研究为导向的综合研究型公立大学。学校专业设置广泛,教学质量卓著,每年吸引着世界百多个

    2022-07-07
    000
  • 英国留学:布里斯托大学商学院实力雄厚

    立思辰留学360介绍,布里斯托大学是英国第一所倡导男女平等接受高等教育的学府,其教学与研究实力都相当雄厚,在英国的研究评审报告中获得很高的评定,也是全英国大学 中,仅次于牛津、剑桥及伦敦大学学院,获得

    2022-07-07
    000
  • 2017年美国普利茅斯州立大学奖学金

    普利茅斯州立大学成立于1871年,坐落于美丽的美国新英国兰地区通往美国东北部湖地和白山自然保护区的必经之道上,是适合学习的优美的自然教室。普利茅斯州立大学被普林斯顿评论评为美国东北部最好的大学之一。学

    2022-07-07
    100
  • 伦敦玛丽女王大学学条件

    伦敦玛丽女王大学(Queen Mary University of London,简称QM)以英国玛丽王后命名,又译伦敦大学玛丽女王学院, 世界百强名校,英国常春藤名校联盟“罗素大学集团”成员,英联邦

    2022-07-07
    300
  • 马来西亚林国荣创意科技大学数码电影与电视文学士如何

    林国荣创意科技大学数码电影与电视(荣誉)文学士课程介绍立思辰留学360介绍,如果您的志愿是做一个电影或电视摄制者,那这项扣人心弦的新科目将是您最佳的选择。全世界电影制片不论是在好莱坞、香港、印度或亚洲

    2022-07-07
    300
  • 新加坡英华美学院专业与课程设置怎么样

    英华美教育集团创建于1983年,是亚洲地区最大的集教育与培训为一体的教育集团之一。新加坡英华美学院就建立在集团总部,位于新加坡西部的教育与科技中心,地理位置十分优越。他邻近繁华的武吉士市镇中心,交通方

    2022-07-07
    300
  • 邓迪大学专业设置

      据立思辰广州留学360罗曼老师介绍,邓迪大学是一所历史悠久的苏格兰传统大学。在由英国星期日 泰晤士报 的大学评比中,邓迪大学因在学科教学质量、毕业生工资收入、学校设施建设等方面的突出表现而荣鹰20

    2022-07-07
    000
  • 新加坡东亚管理学院学什么好

    新加坡东亚管理学院最初创立于1984年,2001年由新加坡教育部批准成为一所高等教育学院。经历了近30年教学管理经验的积累、始终如一的坚守着“就业为导向”的办学使命,今天的EASB已当之无愧的成为新加

    2022-07-07
    300
  • 新加坡澳斯顿学院入学要求

    新加坡澳斯顿学院入学要求入学要求:高中毕业,雅思5.0或AUSTON专业英语课程硕士:本科毕业或专科毕业24周岁以上2—5年工作经验预科:初中毕业或高中在读或OLEVEL新加坡澳斯顿学院入学

发表评论

登录后才能评论

评论列表(0条)

    保存