centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

系统:centos6.5





1.创建脚本目录

mkdir -p /usr/local/sh/

创建备份web文件存放目录

mkdir -p /data/backup/www/





创建备份db文件存放目录

mkdir -p /data/backup/db/





授权backup用户对所有数据库的操作权限(注意用来备份mysql数据库)

GRANT ALL PRIVILEGES ON *.* TO 'backup'@'localhost' IDENTIFIED BY 'pass';





2.编辑备份的脚本文件

vim /data/scripts/backup-web-db.sh





#!/bin/bash

#需备份的站点目录

Website_Dir1=www.chinasoft.com

Website_Dir2=www.yayachinasoft.com





#数据库备份用户名密码

MYSQL_UserName=backup

MYSQL_PassWord=pass

#需要备份的数据名

Backup_Database_Name1=yunva

Backup_Database_Name2=yayasdk





#FTP服务器信息

FTP_HostName=ftp_ip

FTP_UserName=web-backup

FTP_PassWord=pass

FTP_BackupDir=website-db-backup/yayachinasoft-yayachinasoft/





#Values Setting END!





#备份文件名

TodayWWWBackup=*-$(date +"%Y%m%d").tar.gz

TodayDBBackup=*-$(date +"%Y%m%d").sql

OldWWWBackup=*-$(date -d -3day +"%Y%m%d").tar.gz

OldDBBackup=*-$(date -d -3day +"%Y%m%d").sql





#备份站点源码

tar -zcf /data/backup/www/$Website_Dir1--$(date +"%Y%m%d").tar.gz -C /var/www/web $Website_Dir1

tar -zcf /data/backup/www/$Website_Dir2--$(date +"%Y%m%d").tar.gz -C /var/www/web $Website_Dir2





#备份数据库

mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /data/backup/db/$Backup_Database_Name1-$(date +"%Y%m%d").sql

mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 > /data/backup/db/$Backup_Database_Name2-$(date +"%Y%m%d").sql





#备份配置文件

#cp /etc/php.ini /tmp/conf/php

#cp -r /etc/ningx/*  /tmp/conf/nginx





#删除旧的备份文件

rm -f /data/backup/www/$OldWWWBackup

rm -f /data/backup/db/$OldDBBackup





#上传备份文件夹到FTP服务器

cd /data/backup/





lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF

cd /$FTP_BackupDir/www

mrm $OldWWWBackup

mput www/$TodayWWWBackup

cd /$FTP_BackupDir/db/

mrm $OldDBBackup

mput db/$TodayDBBackup

bye

EOF





3.添加脚本执行权限

chmod +x /data/scripts/backup-web-db.sh





4.添加计划任务:

每天凌晨2点执行备份任务

crontab -e





#backup-web-db

00 02 * * * /bin/bash /data/scripts/backup-web-db.sh >/dev/null 2>&1





重启生效

systemctl restart crond

公司内部FTP服务;

调试:

手动测试ftp是否能够连接

lftp ftp_ip -u web-backup,pass





手动调试程序是否正常执行:

sh -x /data/scripts/backup-web-db.sh





FTP_HostName=ftp_ip

FTP_UserName=web-backup

FTP_PassWord=pass

FTP_BackupDir=website-db-backup/yayachinasoft-yayachinasoft/

centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾的更多相关文章

  1. shell脚本连接、读写、操作mysql数据库实例

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  2. Linux 用 shell 脚本 批量 导入 csv 文件 到 mysql 数据库

    前提: 每个csv文件第一行为字段名 创建的数据库字段名同csv 文件的字段名 1. 批量导入 多个 csv 文件 for file in ./*.csv;do mv $file tablename. ...

  3. Shell脚本中执行sql语句操作mysql的5种方法【转】

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  4. shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  5. shell脚本专题之-----------全自动编译安装mysql

    mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...

  6. Shell脚本中执行sql语句操作mysql

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  7. shell脚本专题之-----------全自动编译安装mysql(免安装版)

    mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...

  8. SHELL脚本中执行SQL语句操作MYSQL的5种方法

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  9. mysql数据库每个表的备份脚本

    对mysql数据库中的每张表进行按日期备份,思想是:先把每张表的表名取出取出,然后通过for循环去对每个表进行按日期备份 [root@ZFVM-APP-- backup]# vim dataname. ...

随机推荐

  1. java之JDBC学习总结

    以前一直以为jdbc是很高大上的东西,没想到今天学了jdbc,惊喜来了,just a tool!当然工具是用来帮助人们学习和提供方便的,所以总结了一下,也就是简单的三板斧: first :加载驱动 t ...

  2. final评论1

    1-约跑APP 小组准备的非常的充分,还带了摄像头,发布过程清晰.团队的约跑项目界面相较于Beta版本进行了美化,增加了背景图片,使项目看起来更美观.同时项目支持聊天信息的接收和发送,个人觉得他们组的 ...

  3. 【设计模式】—— 模板方法Template

    前言:[模式总览]——————————by xingoo 模式意图 定义一个类的框架,当它有不同的类时,再具体实现. 比如,我们设计一个跨系统的客户端软件,Windows需要一套展现类,Linux需要 ...

  4. BZOJ 2865 字符串识别 | 后缀数组 线段树

    集训讲字符串的时候我唯一想出正解的题-- 链接 BZOJ 2865 题面 给出一个长度为n (n <= 5e5) 的字符串,对于每一位,求包含该位的.最短的.在原串中只出现过一次的子串. 题解 ...

  5. emWin notes

    emwin 学习小记 @2018-7-5 ## 在使用 graph 控件时,需要在坐标上显示波形,波形刷新函数 GRAPH_DATA_YT_AddValue() 放在一个 while(1) 中,这样便 ...

  6. spring.net框架配置和使用

    spring.net框架学习笔记 spring.net框架是用于解决企业应用开发的复杂性的一种容器框架,它的一大功能IOC(控制反转),通俗解释就是通过spring.net框架的容器创建对象实体,而不 ...

  7. jQuery源码之 empty与html('')的区别

    empty: function() { var elem, i = 0; for ( ; (elem = this[i]) != null; i++ ) { // Remove element nod ...

  8. java基础-多线程应用案例展示

    java基础-多线程应用案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.两只熊,100只蜜蜂,蜜蜂每次生产的蜂蜜量是1,罐子的容量是30,熊在罐子的蜂蜜量达到20的时候 ...

  9. Solr记录-solr介绍及配置

    Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的. 使用Solr构建的应用程序非常复杂,可提供高性能. 为了在C ...

  10. 微信小程序-点击图片预览

    拿接口  有封装 封装查看另外的博文 点击动作 WXHTML 注意 data-xxxx自定义属性 这样知道我点的是哪个参数