文章开始之前,先问下各位站长一个问题:什么东西对于站长是十分重要的?其实对于站长而言,很多东西都是很重要的。但我们现在排除外在因素,把范围缩小到网站系统本身,哪些是非常重要的呢?网站数据就是其中之一了。

网站数据包括程序文件本身、网站运行过程中不断产生的附件数据(图片、文档、视频等)以及数据库文件,三大块总括为网站数据。

以 自己为例,在这两年多的站长经历来看,最让我痛苦的就是某一天起床,一直苦心经营的网站打不开了,检查过DNS也正常,最后询问空间运营商发生什么事了, 获知的结果系:服务器硬盘损坏,所有数据无法恢复(在这备注下:一般小站长买的机器或者空间都很低配置的,所以别想有什么数据备份服务,要就加钱买),结 果就是一阵阵的失落。如果网站刚上线运行不久就发生这样的事或者还不会那么心痛,从头再来也不难。假如是一个运行若干年的网站,突然发生这么一次意外就可 以说是重重一击。

刚成为站长的前几个月,我对数据备份这个事情压根没考虑过,直到有一天在群里看到有位群友痛心的经历——网站彻底崩溃,数据全没!!那是经营了3年多的一个老站,就么倒下了,真是闻者伤心听者落泪(有点夸张了)。

我 看到了这样活生生的样板,不做数据备份的后果很严重。所以我现在总结出一个经验:如果真要用心做一个网站,就一定要做好数据备份工作,而且最好能异地备 份,有些朋友以为在机器本地做了备份就乐了,放心了,那就大错。对于备份数据,又要面临一个实际的问题:每次都自己上服务器把相关的数据打包,然后再用 FTP下载回来吗?这样时间长了就会累,所以今天就以Linux(Centos 5.5)环境讲讲如何实现全自动远程(异地)对全站数据进行备份。

要实现自动远程备份功能需要的关软件有:服务器(本地环境)要安装lftp,远程端要开启FTP服务,对登录的目录有读写权限,具备以上2个条件即可。

如果机器上没有安装lftp这个工具,可以通过以下命令完成:

#yum install lftp

假设把相关的脚本文件存放在/apps/script目录下

#vi /apps/script/autobackup.sh //输入以下内容

#!/bin/bash

#author: www.5ishare.com

echo "backup job start"

#设置要备份的网站目录,即是网站的根目录

file=/apps/wwwdata

#设置本地备份目录,用于存放打包后的文件

backpath=/apps/bkdata/

dbuser=数据库用户名

#数据密码,要记得用单引号将把整个密码引起来,如果密码中有单引号就用双引号,嘿嘿

dbpwd='数据库密码'

dbname=数据库名称

domain=远程端的域名或者IP地址

user=FTP用户名

userpwd='FTP用户密码'

bkdate=$(date +%Y%m%d)

sqlfile_sql=${dbname}_${bkdate}.sql

sqlfile_gz=${dbname}_${bkdate}.tar.gz

sqlfp=${backpath}${bkdate}/$sqlfile_sql

if [ -e $backpath${bkdate} ]

then

echo $backpath is exists.

else

mkdir -p $backpath${bkdate}

fi

#执行数据库备份,/apps/mysql/bin/mysqldump修改为你实际环境的路径

/apps/mysql/bin/mysqldump -u $dbuser -p$dbpwd $dbname > ${sqlfp}

#对备份之后的数据库文件压缩,或者在数据库备份时通过加入参数直接进行压缩

tar zcf $backpath${bkdate}/$sqlfile_gz -C ${backpath}${bkdate} ${sqlfile_sql}

#删除未压缩SQL的文件

rm -f ${sqlfp}

#生成的文件名格式:web_网站目录名_20130419.tar.gz

fn=web_${file##*/}_${bkdate}.tar.gz

tar zcf $backpath${bkdate}/$fn -C ${file%/*} ${file##*/}

#以下操作为FTP自动连接并把本地文件上传到异地服务器上

/usr/bin/lftp ${domain} << END

user ${user} ${userpwd}

lcd ${backpath}

mirror -R ${bkdate}

exit

END

echo "backup job done"

------------分隔线--------------

保存退出之后,为该脚本增加执行权限

#chmod +x /apps/script/autobackup.sh

#crontab –e //添加定时任务,根据具体需求设定备份间隔

#0 4 1,16 * * /apps/script/autobackup.sh

我设定为每月的1日,16日的零辰4点钟执行备份任务。最好不要在大白天做这些操作,因为会让整个系统明显变慢的。

经过以上配置,站长们就不用再愁数据备份的烦恼了,可以说是一劳永逸。以上仅为个人实际应用写,跟其各自的需求可能不大一样,但本质不变,只要稍作修改即可,如果有其它疑问欢迎大家留言交流学习。

Linux(Centos)全自动异地备份数据(WEB+Mysql)的更多相关文章

  1. innobackupex 备份数据搭建 MySQL Slave

    简介: 数据量比较大时,使用 innobackupex 备份数据新增 MySQL Slave 节点. 安装 innobackupex 工具,我这里写过一次:http://www.cnblogs.com ...

  2. linux centos 恢复 还原 备份 Snapper 快照说明

    为什么要使用Snapper快照? 我们可以想像以下场景: 1. 场景一:系统发生意外宕机,工程师无法快速定位问题,业务受到中断,客户十分不满意. 2. 场景二:项目会议上,就是否升级某软件到最新版本, ...

  3. Widnows批处理异地备份数据

    @echo off@title Mysql+fileBckupset files=D:\backup\%date:~0,10%.rarset userdb="root"set pw ...

  4. linux CentOS YUM 安装 nginx+tomcat+java+mysql运行环境

    Java环境配置 1 安装JDK 查看CentOS自带JDK是否已安装 1 [root@test ~]# yum list installed |grep java 若有自带安装的JDK,应如下操作进 ...

  5. Linux - CentOS 7 通过Yum源安装 MySql 5.7

    添加MySQL Yum存储库 从官网下载最新的mysql源 官网地址:https://dev.mysql.com/downloads/repo/yum/ 选择并下载适用于平台的发行包. 然后,在Lin ...

  6. Linux CentOS下安装Tomcat9

    本文讲解在Linux CentOS下安装Tomcat9,以及Web项目的部署发布. 环境:阿里云ECS 云服务器Linux CentOS 使用XShell客户端连接服务器,进行操作实践. 1.下载To ...

  7. Linux - CentOS 7 安装 .Net Core 运行环境

    阿里云的CentOS 7.7 64位,所需要的环境:MySql 5.7,.Net Core 2.2 ,Nginx 我这里用的 Xshell 工具,首先用root进入系统 版本信息 打开终端输入命令: ...

  8. Linux Centos 迁移Mysql 数据位置

    Linux Centos 迁移Mysql 数据位置 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysq ...

  9. 在linux下实现mysql自动备份数据

    使用的系统为CentOS,mysql版本为5.6 备份功能主要利用以下功能实现: mysql命令中的mysqldump命令 linux下脚本编写 linux下crontab定时任务的使用 首先确定你要 ...

随机推荐

  1. JEE学习线路

    传智播客:javaEE学习线路以及需要掌握的知识点:http://java.itcast.cn/subject/javastudypath/index.shtml 最近在学JavaEE,没学Java ...

  2. Topcoder SRM 630 (500 floyed 暴力 _builtin_popcount())

    题意:给n个点,保证图联通,给点相连的距离,求一个最多的点,这些点之间的距离都是相同的. 分析: 下面的代码是我们房间第一的大神的,写的很简洁,我的思路和他的一样,但是我不知道错哪了. 思路是暴力枚举 ...

  3. UVA 10917 Walk Through the Forest(dijkstra+DAG上的dp)

    用新模板阿姨了一天,换成原来的一遍就ac了= = 题意很重要..最关键的一句话是说:若走A->B这条边,必然是d[B]<d[A],d[]数组保存的是各点到终点的最短路. 所以先做dij,由 ...

  4. sql给数据库加锁问题

    加锁是在操作数据时进行了,不能事后加锁. 例: begin   tran           insert   表   with(TABLOCKX)     --加锁           (字段列表) ...

  5. php mysql事务

    这里记录一下php操作mysql事务的一些知识 要知道,MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务.但是,在使用事务时,是需要执行多条sq ...

  6. mybatis+spring+struts2框架整合

     近期公司要开发新的项目,要用struts2+mybatis+spring框架,所以学习了下,来自己的博客发表下,希望能给大家带来帮助!下边我把我的myschool开发的源代码以及数据库贴出来!  开 ...

  7. spoj 694(后缀数组)

    题意:求一个字符串的不重复子串的个数. 分析:对于下标为i的位置,能够产生的前缀子串个数为len-i(下标从0开始),对于与它字典序相邻的后缀产生的子串是重复的(就是他们的最长公共前缀),所以我们要减 ...

  8. MySQL安装之“测试”

    将MySQL安装完成之后还需要对其进行测试,判断MySQL是否安装成功,MySQL其可视化与我们之前使用过的SQLserver不同.MySQL其中测试方法有两种:一.使用MySQL命令进行测试:二.安 ...

  9. history命令

    在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中.通过这个文件可以查询 shell 命令 ...

  10. HDU 5727 Necklace 环排+二分图匹配

    这是从山东大学巨巨那里学来的做法 枚举下黑色球的排列总数是8!,然后八个白球可选的位置与左右两个黑球存不存在关系建图就行 这是原话,具体一点,每次生成环排,只有互不影响的才连边 最后:注重一点,n个数 ...