如何在Linux服务器中备份

如何在Linux服务器中备份,第1张

linux系统下使用脚本定时备份数据库,代码如下:

#!/bin/bash

#Setting

#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式

#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第

#18行,则默认以tag的方式备份

#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz

DBName=mysql

DBUser=root

DBPasswd=123456

BackupPath=/home/wang/www/backup/mysql/mysqlbackup

LogFile=/home/wang/www/backup/mysql/db.log

DBPath=/var/lib/mysql/

#BackupMethod=mysqldump

#BackupMethod=mysqlhotcopy

#BackupMethod=tar

#Setting End

NewFile="$BackupPath"db$(date +%y%m%d).tgz

DumpFile="$BackupPath"db$(date +%y%m%d)

OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz

echo "-------------------------------------------" >>$LogFile

echo $(date +"%y-%m-%d %H:%M:%S") >>$LogFile

echo "--------------------------" >>$LogFile

#Delete Old File

if [ -f $OldFile ]

then

rm -f $OldFile >>$LogFile 2>&1

echo "[$OldFile]Delete Old File Success!" >>$LogFile

else

echo "[$OldFile]No Old Backup File!" >>$LogFile

fi

if [ -f $NewFile ]

then

echo "[$NewFile]The Backup File is exists,Can’t Backup!" >>$LogFile

else

case $BackupMethod in

mysqldump*)

if [ -z $DBPasswd ]

then

mysqldump -u $DBUser --opt $DBName >$DumpFile

else

mysqldump -u $DBUser -p$DBPasswd --opt $DBName >$DumpFile

fi

tar czvf $NewFile $DumpFile >>$LogFile 2>&1

echo "[$NewFile]Backup Success!" >>$LogFile

rm -rf $DumpFile

mysqlhotcopy*)

rm -rf $DumpFile

mkdir $DumpFile

if [ -z $DBPasswd ]

then

mysqlhotcopy -u $DBUser $DBName $DumpFile >>$LogFile 2>&1

else

mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1

fi

tar czvf $NewFile $DumpFile >>$LogFile 2>&1

echo "[$NewFile]Backup Success!" >>$LogFile

rm -rf $DumpFile

*)

/etc/init.d/mysqld stop >/dev/null 2>&1

tar czvf $NewFile $DBPath >>$LogFile 2>&1

/etc/init.d/mysqld start >/dev/null 2>&1

echo "[$NewFile]Backup Success!" >>$LogFile

esac

fi

echo "-------------------------------------------"

echo

#lftp -f lftp.sh 如果有FTP可同时上传ftp中。

再利用crontab命令生成/var/spool/cron/root 文件:

#crontab –e

//打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令

//m h dom mon dow command

//具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)

//如: 10 02 * * * /home/backup/autobackupmysql.sh (表示零晨二点十分执行备份脚本)

Linux是公认的运行稳定、安全性较高的 *** 作系统,但是服务器硬件故障和各种意外因素都会导致Linux服务器硬盘上数据丢失。特别对于运用在商业领域中的Linux服务器,数据的安全性、完整性和灾难后的数据恢复能力是每一个Linux系统管理员最为关心的问题。Linux作为新一代网络 *** 作系统,在服务器方面的应用越来越广泛。作为专门的网络服务器,一个重要功能就是对服务器数据进行备份,以确保数据的安全。

常见的Linux数据备份方法

Linux *** 作系统中的数据备份工作是Linux系统管理员的重要工作和职责。传统的Linux服务器数据备份的方法很多,备份的手段也多种多样。常见的Linux数据备份方式仅仅是把数据通过TAR命令压缩拷贝到磁盘的其它区域中去。还有比较保险的做法是双机自动备份,不把所有数据存放在一台计算机上,否则一旦这台计算机的硬盘物理性损坏,那么一切数据将不复存在了。所以双机备份是商业服务器数据安全的基本要求。通常情况下使用的双机备份是双机定时备份文件,而不是实时的。要实现双机备份,必须先在单机上备份所有的文件,然后再把备份文件传输到其它机器上。这样可能比较麻烦,而且有不足之处。例如,这样做对于不需要备份的文件也要在网络上传输,会造成带宽的浪费。

实现备份与刻录的整合

为了弥补Linux上常见备份方法的不足,本文将讲述使用sitback软件将Linux服务器磁盘中的指定数据进行自动备份,并刻录到CDR光盘的方法,以达到数据在光盘中安全存储的目的。此方法将数据备份和光盘刻录两个步骤整合在一起,自动化程度和安全性较高,而且sitback还能实现Linux网络中不同计算机之间的数据备份。

sitback简介

sitback是一款基于开源协议开发的Unix平台下的自动备份软件。与一些 Linux开放源码软件不同,sitback开发者仅提供源代码压缩包的形式给Linux用户下载。尽管sitback没有提供安装方便的RPM格式,但是sitback的安装采用了基于GNU协议的自动安装和配置的automake/autoconf模式,使得一般的Linux系统管理员能顺利地安装调试好sitback。

sitback的获取和安装

目前sitback官方网站www.mrbean.dk提供的 sitback最高版本为0.3.1。为了能最大程度地体现sitback的最佳性能,sitback的开发者建议Linux用户不要把sitback的开发版本和Beta测试版本使用到实际的数据备份中去,以防出现意外。

安装sitback源代码压缩包可以根据以下几个简单的步骤完成:

◆建立临时解压目录 /temp;

◆把sitback压缩包拷贝到/temp目录,并使用“tar xvfz sitback-x.x.x.tar.gz”命令对sitback源代码压缩包进行解压;

◆执行./configure;

◆执行make;

◆执行make install。

通过以上几个步骤可以迅速地安装好sitback。请注意使用超级用户root身份对sitback进行安装。

编译完sitback源代码压缩包之后,接着要在用户根目录中的Home目录下创建一个.sitback目录。该目录用来存放一些数据备份和刻录时产生的临时文件,以及一些脚本文件或磁盘驱动器参数文件。

同所有通过编写脚本文件来运行的程序一样,sitback也需要Linux用户自行编写备份和刻录的脚本文件,并让Linux系统把sitback当作一个备份进程(backup-daemon)来自动执行。使用高效安全的Webmin管理系统来自动执行sitback也很方便。总之,用最少的代码编写出适合Linux系统实际情况的脚本是最为安全、高效的。

将数据刻录至光盘的条件

让sitback自动备份指定的磁盘数据,并将备份的数据直接刻录到光盘中去,必须考虑的条件主要有以下几点:

◆sitback运行的时间,即备份数据时间;

◆要备份的源目录;

◆要备份到的目的目录;

◆选择存储介质,包括磁介质、光存储介质等;

◆是否要对备份数据进行校验比较,提高备份安全性;

◆备份模式,全备份或部分数据备份;

◆备份数据还原问题。

sitback提供了很多参数供用户选择,具体参数和用法可以参考sitback源代码压缩包里的开发文档和详细的使用手册。

实例运用

实例1

假设某Linux服务器中有以下这些目录:

◆/usr/smbdata 包含大多数应用软件和用户数据文件;

◆/usr/grafik 包含有重要的图形文件。

为了备份以上两个目录数据,可以编写一个脚本文件,代码及说明如下:

ARCHIVE=/dev/st0

#定义要备份的数据

(ARCHIVE表示要备份的磁盘驱动器、文件目录,甚至主机,例如:

“backuphost:/dev/st0”、

“backup@backuphost:/dev/nrt0”、

“me@192.168.1.17:/tmp/temp_backup.tar.gz”等)

TARGET=/usr/smbdata

#要备份的目的目录

TARGET=/usr/grafik

#要备份的目的目录

COMPRESSION=YES

#备份模式为对数据进行压缩后备份

VERIFY=YES

#对备份数据进行校验

REPORTFILE=/usr/smbdata/latest_backup.txt

#产生备份报告文件

REPORTPRINTER=//penguin4/Canon

#打印机信息

SMBUSER=computer1

#SAMBA用户端计算机名

SMBPASSWD=123abc

#访问密码

VOLUMENAME=Full backup - Taastrup

TIME=10200

#备份时间,每天2:00进行备份

TIME=20200

TIME=30200

TIME=40200

TIME=50200

TIME=60200

以上是一个简单的数据自动备份脚本的样本文件。如果想使用SysV初始化,可以在/etc/rc.d/init.d/中创建一个小的脚本文件来运行 sitback。在上述脚本最后一行加入“/usr/local/bin/sitback -d data”才能使得sitback自动运行。查看每次备份的情况时,可以打开临时文件/.sitback/sitback.log,里面有sitback 运行的详细记录。

实例2

使用sitback将Linux服务器中数据自动备份、刻录两个步骤进行整合。

为了达到数据备份和光盘刻录整合的目的,需要使用以下脚本来实现。它是来自sitback官方网站的样板脚本。

# Full backup of /home/bean, excluding Images

#对/home/bean,目录进行全备份

# bean@mrbean.dk 2002

# Write the archive to my cd-writer at 0,0,0

#将备份数据在指定时间写入CDR刻录机中

# (Iomega ZIPCD 650, USB), use speed=2, so that i can 刻录机硬件参数

# do other things while the backup is cooking. Also

# use on-the-fly copy to avoid too much temporary data.

# (my machine has no problem supporting this)

#

ARCHIVE=0,0,0

SPEED=2

#Iomega ZIPCD 650, USB刻录机写入速度,

CD ON THE FLY

#写入方式

# It is a huge advantage to have the files directory available

# on the cd, not inside an archive, when restoring my

# setup, hence the type 'CDRW'

#

TYPE=CDRW

#光盘类型,CDRW可擦写光盘

# Targets... Exclude Images

TARGET=/home/bean

#目标文件目录

EXCLUDE=/home/bean/Images

#目标文件目录中不用备份的目录(即排除备份的目录)

# Various stuff. Compression and verification will automagically

# be turned off by sitback, but i do not want the warnings either,

# so i just turn it off from the beginning...

#

VERIFY=NO

#对备份数据进行校验

COMPRESSION=NO

#备份数据无需压缩

# When done, put a backup report in /home/bean/backup.log

#

REPORTFILE=/home/bean/backup.log

#产生的备份报告文件及路径

关于sitback备份数据的恢复及SSH等安全措施,此处不予举例说明。总的来说,sitback是一款不可多得的Linux *** 作系统平台中优秀的数据备份和恢复工具,使用sitback可以使得企业实现安全而高效的备份。

科技时代,任何行业都离不开数据的分析以及统筹,如果掌握了最关键的数据及技术,那成功就指日可待,所以数据对于一个企业来说,就是最无形的财富,而一个企业的数据基本都有服务器保存及管理着,如何保证数据安全,实现数据同步及备份?诚恺科技小编就同大家一起来看看在Linux服务器中利用rsync配合inotify实现数据实时同步及备份的方法。

rsync:可以镜像保存整个目录树和文件系统。可以很容易做到保持原来文件的权限、时间、软硬链接等等。第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。

方案:起初用rsync进行数据备份是利用计划任务,定时执行一下命令实现rsync的同步,但最近开发这边修改比较频繁,看来需要实时同步备份来完善备份机制!所以需要利用inotify触发器来改善!达到一旦指定的位置有了新的变动就将其同步!

环境:

CentOS 6.4 64位

rsync-3.0.9

inotify-tools-3.14

说明:

10.10.1.6 (rsync+inotify)----------网站程序(/data0/htdocs/)

10.10.1.9 (rsync)------------------网站程序备份(/data0/htdocs/)

目的:

实现10.10.1.6的/data0/htdocs/目录下发生任何变动都将实时同步到10.10.1.9的/data0/htdocs/上(另,这两台都跑有keepalived+nginx,来实现出现故障自动切换的容灾,详细配置会在后面补上)

一、web服务器10.10.1.6 (rsync+inotify)

1、准备软件包

2、安装Rsync

1)、1234 tar-zxvf rsync-3.0.9.tar.gz

2)、cdrsync-3.0.9

3)、./configure--prefix=/usr/local/rsync

4)、makemakeinstall

建立密码认证文件

[root@ftp ~]# echo "111111">/etc/rsyncd/rsyncd.secrets建立密码认证文件

*其中111111可以自己设置密码,rsyncd.secrets名字也可以自己设置;

权限:要将/etc/rsyncd/rsyncd.secrets设置为root拥有, 且权限为600。

# chmod 600 /etc/rsyncd/rsyncd.secrets

3、安装inotify

1)、1234 tar-zxvf inotify-tools-3.14.tar.gz

2)、cdinotify-tools-3.14

3)、./configure--prefix=/usr/local/inotify

4)、makemakeinstall

4、创建rsync复制脚本

此项功能主要是将ftp端的目录/data0/htdocs/里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给10.10.1.9的/data0/htdocs里,下面是通过shell脚本实现的。

[root@web ~]# vim /root/shell/rsync.sh

[root@web ~]# chmod u+x /root/shell/rsync.sh

[root@web ~]# setsid /root/shell/rsync.sh &

#后台运行脚本,关闭shell终端继续后台运行

rsync.sh脚本加入开机启动项

# echo "/root/shell/rsync.sh" >>/etc/rc.local

防火墙开启rsync端口:873

添加:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -jACCEPT

重启:

# /etc/init.d/iptables restart

二、备份服务器10.10.1.9(rsync)

1、准备工作

创建备份目录:

# mkdir /data0/htdocs

2、安装rsync(备份主机只安装rsync)

1)、1234 tar-zxvf rsync-3.0.9.tar.gz

2)、cdrsync-3.0.9

3)、./configure--prefix=/usr/local/rsync

4)、makemakeinstall

3、建立用户与密码认证文件

[root@backup ~]# echo "root:111111" >/etc/ rsyncd/rsyncd.secrets

[root@backup ~]# less /etc/rsyncd/rsyncd.secrets

root:111111

注意:

请记住,在10.10.1.6端建立的密码文件,只有密码,没有用户名;而在10.10.1.9里建立的密码文件,用户名与密码都有。

权限:要将/etc/rsyncd/rsyncd.secrets设置为root拥有, 且权限为600。

#chmod 600 /etc/rsyncd/rsyncd.secrets

4、建立rsync配置文件

[root@backup ~]# vim /etc/rsyncd/rsyncd.conf

启动rsync服务

# /usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf

# ps -ef |grep rsync

Rsync服务加入开机启动项

# echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local

防火墙开启rsync端口:873

添加:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -jACCEPT

重启:

# /etc/init.d/iptables restart

完成,其实这个时候数据已经同步了!

测试一下:

由于/data0/htdocs/下涉及到一些公司信息,所以就以/data0/htdocs/tmp/为例

主机名可以区别是两台机器,里面的内容完全一直,连文件的属性都一样

再对里面修改一下试试,创建一个文件,然后删除user目录试试


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

原文地址:https://54852.com/yw/8937646.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存