服务器备份该如何进行,第1张

服务器的备份可以用专业的备份软件来做,比如支持服务器数据备份的备特佳容灾备份软件。具体备份该如何进行,不光要考虑到服务器的操作系统、数据库等配置,很大程度上还取决于服务器上所运行的应用,或者说是业务系统。

在考虑具体的备份方案时,涉及到的因素比较多。数据很重要,条件允许的情况下,大部分都会选择实时备份。实时备份的软件也很多,就跟买衣服似的,一分钱一分货,总是拿价格来衡量好坏肯定是有失公允的。业务系统如果对连续性要求较高的话,只做灾备就不行了,要在数据备份的基础上,加上业务连续,或者说业务接管,当服务器宕机无法对外提供服务时,备份服务器或者说备份机可以代替生产机继续提供服务,不会造成业务中断。

linux系统下使用脚本定时备份数据库,代码如下:#!/bin/bash #Setting #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 #默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第#18行,则默认以tag的方式备份#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxxtgz DBName=mysqlDBUser=rootDBPasswd=123456BackupPath=/home/wang/www/backup/mysql/mysqlbackupLogFile=/home/wang/www/backup/mysql/dblogDBPath=/var/lib/mysql/#BackupMethod=mysqldump#BackupMethod=mysqlhotcopy#BackupMethod=tar#Setting EndNewFile="$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 Fileif [ -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/initd/mysqld stop >/dev/null 2>&1 tar czvf $NewFile $DBPath >> $LogFile 2>&1 /etc/initd/mysqld start >/dev/null 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile ;; esacfiecho "-------------------------------------------"echo#lftp -f lftpsh 如果有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/autobackupmysqlsh (表示零晨二点十分执行备份脚本)

  备份linux系统,不像Windows,Linux不限制根用户存取任何东西,因此,你完全可以把一个分区上每一个的文件放入一个TAR文件中。来实施这一方法,用这个成为根用户:

sudo su

接着去你的文件系统的根目录(在我们的例子中,我们使用它,不过你可以去你希望备份的任何地方,包括远程或可移动驱动器。)

cd /

然后,下面就是我用来备份我的系统的完整的命令:

tar cvpzf backuptgz / --exclude=/proc --exclude=/lost+found --exclude=/backuptgz --exclude=/mnt --exclude=/sys

接着,让我们稍微解释一下:

  很明显,'tar'部分就是我们将要使用的软件。

  'cvpfz'是我们给tar加的选项,像“创建一个压缩文档”(这是显然的),“保存权限”(以便使每一个相同的文件有相同的权限),以及“gzip”(缩减大小)。

  接下来,是压缩文档将获得的名称,在我们的例子中是backuptgz。

  紧随其后的是我们想要备份的根目录。既然我们想备份所有东西:/

  接着就是我们要剔除的目录了。我们不想备份每一样东西,因为包括有些目录不是非常有用。同时确保你没有把备份文件本身也加进去了,否则,你会得到怪异的结果的。你也许同样不打算把/mnt文件夹包括进来——如果你在那儿挂载了其他分区——否则最终你会把那些也备份的。同时确保你没有任何东西挂载在 /media(即没有挂载任何cd或可移动介质)。否则,剔除/media。

  如果你想排除所有的其他分区,你可以使用 'l' 参数代替 --exclude, 上面的命令看起来象这样:

tar cvpzlf backuptgz / --exclude=/lost+found --exclude=/backuptgz

按:kvidell在论坛主题里建议也剔除/dev目录。不过,我有其他证据表明这样做是不明智的。

好了,如果命令适合你的话,敲击确定键(或者回车键,管它叫什么名字),然后什么都不用干,放松一下。备份也许会花上一段时间。

完了以后,在你的文件系统的根目录会有一个叫作backuptgz的文件——很可能相当巨大。现在你可以把烧录到DVD上,或者移动到另一台机器,你可以做任何你想做的事情。

按2:在进程的最后,你也许会得到一条信息,写着“tar:由于先前错误的耽搁而存在错误”或者其他什么,不过大多数情况下你可以仅仅忽略它。

作为选择,你可以使用Bzip来压缩你的备份。这意味着较高的压缩比但是也意味着较低的速度。如果压缩比对你很重要,只需用“j”替换命令中的“z”, 同时给备份命一个相应的扩展名。这些会使命令变成这样:

tar cvpjf backuptarbz2 / --exclude=/proc --exclude=/lost+found --exclude=/backuptarbz2 --exclude=/mnt --exclude=/sys

21 通过网络备份如果空白的文件系统太少了并且你又不能挂载其它的文件系统来保存备份文件,你有可能使用 netcat 来完成备份

在接受端你必须设置 netcat 用于写备份文件,象这样:

nc -l -p 1024 > backuptarbz2

然后你传送 tar 命令,不带 'f' 参数通过 netcat 在发送端,象这样:

tar cvpj / | nc -q 0 1024

在上面的命令中 1024 仅仅是一个随机的端口号, 任何从 1024 或以上的都可以工作

如果安全的通过网络备份不依赖文件系统完成备份 事实上一个真正快的网络比写备份文件到磁盘要快

在上面的讲述中 (由于我刚刚发呆,因此我不能证实它是可靠的) 是这个命令:

tar cvpj / | ssh "cat > backuptarbz2"

3 恢复警告:看在上帝的份上,在这一部分请小心谨慎。如果你不理解你在这里干了什么,你可能最终毁坏了对你而言很重要的东西,所以请小心谨慎。 那么,我们将紧接着上一章的例子:在分区的根目录下的backuptgz文件

再一次确保你是根用户以及备份文件在文件系统的根目录。

Linux美妙的地方之一就是这一项工作甚至可以在一个正在运行的系统上进行;没必要被引导cd或者任何东西搞得晕头转向。当然,如果你使你的系统无法被引导了。你也许别无选择,只能使用一张live-cd了,但是结果是一样的。你甚至可以在Linux系统正在运行的时候,移除它里面所有文件。可是我不告诉你那个命令!

好了,言归正传。这是我要用的命令:

tar xvpfz backuptgz -C /

如果你使用 bz2

tar xvpfj backuptarbz2 -C /

警告:这会把你分区里所有文件替换成压缩文档里的文件!

只要敲一下确定/回车/你的兄弟/随便什么,然后去看焰火吧。同样,这会花一段时间。等它完成了,你就有了一个完全恢复的Ubuntu系统!只需确保在你做其他任何事情之前,重新创建你剔除的目录:

mkdir proc mkdir lost+found mkdir mnt mkdir sys etc

当你重启以后,所以的事情都会和你备份的时候一模一样。

31 恢复 GRUB那么,如果你想把你的系统移动到一块新硬盘上,或者,你想对你的GRUB做一些糟糕的事情(比方说,安装Windows),你也将需要重装GRUB。在这个论坛里,有不少如何做这个的非常好的指导,所以我不会从头重新做起。相反,看一下这里(论坛) 或者这儿:RecoveringUbuntuAfterInstallingWindows

在这个论坛主题中,提出了一些方法。我个人建议第二个,remmelt贴出来的,因为我发现它每次都管用。

对,就是那个!我希望它有帮助!

4 其他方法也许你也想看一下这些能帮助你自动备份系统的程序

  Partimage

  Mondo Rescue

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 服务器备份该如何进行

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情