Linux(Centos)全自动异地备份数据(WEB+Mysql)

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

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

  以自己为例,在这两年多的站长经历来看,最让我痛苦的就是某一天起床,一直苦心经营的网站打不开了,检查过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点钟执行备份任务。最好不要在大白天做这些操作,因为会让整个系统明显变慢的。

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

本文地址:http://www.5ishare.com/tech/system/368842.shtml

时间: 2024-09-14 02:04:16

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

使用批处理异地备份数据(winrar)_win服务器

为了保障服务器中数据的可恢复性,采用异地备份数据库方案.异地备份数据分为异地备份文件数据与异地备份数据库数据二种.其中异地备份文件数据是为了备份网站中用户上传的文件而设计的.而异地备份数据库数据是将数据库中数据备份文件上传到异地服务器. 如果省事可以使用一些软件例如 绿环FTP数据备份.rsync都可以. 一.实施过程及原理为: 1.       需安装WinRAR软件,用于将多个待备份文件压缩成一个压缩文件.2.       书写备份脚步:目录定位到WinRAR软件安装路径下cd c:\pro

Linux Centos 下使用yum 命令安装mysql

1. 查看服务器中有没有安装过Mysql 1. 查看有没有安装包: yum list mysql* #移除已经安装的mysql yum remove mysql mysql-server mysql-libs compat-mysql51 rm -rf /var/lib/mysql rm /etc/my.cnf 2. 查看是否还有mysql软件: rpm -qa|grep mysql #如果有的话,继续删除 3. 安装mysql客户端 yum install mysql-server yum i

linux中利用mysqlhotcopy备份数据脚本示例

mysqlhotcopy只是简单的缓存写入和文件复制的过程,占用资源和备份速度比mysqldump快很多很多.特别适合大的数据库,但需要注意的是:mysqlhotcopy只支持MyISAM 引擎 1.安装perl  代码如下 复制代码 #yum -y install perl perl-DBI 使用mysqlhotcopy需要安装perl支持,因为mysqlhotcopy是perl写的 2.安装DBD-mysql  代码如下 复制代码 #wget http://www.fcbu.com/upim

Linux CentOS Mysql修改默认端口

  为了提高服务器的安全性,本节课主要讲的是Linux下如何修改Mysql端口.支持Linux环境下大部分系统的修改,如Centos和Ubuntu等. 演示环境: Linux CentOS 6.3 X32 Mysql 5.1.66 一.编辑my.conf vi /etc/my.conf 二.在[mysqld]下添加port=3506 三.重启mysql服务 #/etc/init.d/mysqld restart Tips: 0.3506是你想要修改的端口; 1.修改后记得将端口添加进iptabl

使用批处理文件异地备份数据库(最近几天的数据)_vbs

为了保障服务器中数据的可恢复性,采用异地备份数据库方案.异地备份数据分为异地备份文件数据与异地备份数据库数据二种.其中异地备份文件数据是为了备份网站中用户上传的文件而设计的.而异地备份数据库数据是将数据库中数据备份文件上传到异地服务器. 一.实施过程及原理为: 1.       需安装WinRAR软件,用于将多个待备份文件压缩成一个压缩文件.2.       书写备份脚步:目录定位到WinRAR软件安装路径下cd c:\program files\winrar执行rar.exe程序rar a -

linux中mysql命令方式备份数据的问题

这几天公司新出了个组件化的项目,里面需要用到mysql数据库相关的技术,由于之前一直用的mongodb,所以mysql几乎忘光了,于是只能在linux虚拟机中重新开始学习. 基本的增删改查还好,但是在数据备份的上遇到了一些问题,好在一番尝试之后终于成功. Mysql的api以及网上说的备份命令是:mysqldump  -uroot –p 要备份的数据库名> 目标路径/目标文件名.sql,于是我就照着敲了一遍,但是结果报了一个2002的异常(补充:一开始用这个命令的时候是提示找不到mysqldum

Linux服务器数据库(MySQL、ORACLE)简单的异地备份方案

Linux服务器MySQL数据库简单的异地备份方案 首先简单说下: 1.执行脚本导出数据库. mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/backup.sql 2.使用scp将导出的数据库文件传输到其他服务器上,一般进行异地备份,容灾. scp -P 195 /bak/db/backup.sql root@xxx.xxx.xxx.xxx:/bak 其中195为ssh端口号,如果是默认的22,可以省略 -P 22.

linux下Vps自动备份web和mysql数据库的脚本_Linux

用Vps什么事都要自己费心,备份也是.像Linode里的备份服务是要收费的,一个月是5美元.与其花这5美元,不如自己丰衣足食.为服务安装上了Dropbox,设定为每天4:00-6:00 开启同步服务.在之前运行两个脚本,自动备份web文件夹和mysql数据库. 两个脚本都是备份文件到/root/Dropbox/backup目录里,并自动删除10天前的备份.web备份是每周行一次,删除30天前的备份. 一.备份WEB文件夹 1.备份/home/users/public_html目录 2.修改cro

Linux VPS主机定时自动备份网站及MYSQL数据库的脚本

从我们开始学习建站开始,不论我们是用免费的虚拟主机,还是省吃俭用购买的付费主机,以及我们在更大的项目需要转向VPS或者服务器存储:不论我们是不是技术科班出身,还是跟老左一样,看到网友们都有自己的网站于是热情澎湃的也搭建一个玩玩:不论我们的网站是大还是小,有盈利还是没有盈利,都要学会基本的自我维护,尤其是网站数据的备份.   我们不要过分的依赖和信任主机商给我们提供的备份,即便我们购买的很牛.很贵的服务商的产品,他们也可能会由于各种的可能性导致数据丢失或者奔溃的情况,我们可以选择定期手工备份或者用