Linux环境下的基本备份方法

转载 2007年09月23日 02:38:00
原贴:http://blog.chinaunix.net/u/23204/showart_176611.html

 

 
Linux环境下的基本备份方法
 
 
 现在我们已经讨论了如何调用磁带设备,并且我们已经知道如何决定使用回卷或非回卷设备。但是如何实现将系统的文件从系统中搬移到磁带设备上 呢?这是各种备份工具的功能了。所有的Linux发布都提供了所有备份工具的祖先:tar(当然实际上dbppt和bppt, a/k/a dump and restor,才是Unix系统的备份工具的亚当)。tar命令在Unix Version 7中出现的。该命令的名字来自于"Tape ARchiver"。该命令被设计为能非常容易的实现将数据从系统备份到磁带中或者从磁带中恢复数据。

  tar命令的基本语法为:

  tar -mode -option [files]

  这里c表示创建(backup),-x提取(restore)或者-t内容列表(list),选项包括如下元素:如-v表示详细输出,-f file表示目的(创建模式)或源(提取或者列表模式),更详细的信息,请看系统tar命令的手册(man tar)。

  使用tar做最简单的备份如下所示:

  tar -cvf /dev/st0
  lost+found/
  var/
  var/adm/
  var/adm/LST/
  var/adm/LST/log/
  var/adm/LST/log/debug
  var/adm/LST/log/history
  var/adm/LST/log/cmd.trace
  var/adm/LST/log/install.success
  var/adm/LST/log/postin.failed
  var/adm/LST/log/install.failed
  var/adm/LST/analyse/
  var/adm/LST/analyse/boot.img
  var/adm/LST/analyse/boot.msg
  var/adm/LST/analyse/boot.info
  var/adm/LST/analyse/boot.diag
  var/adm/LST/analyse/boot.params
  var/adm/LST/database/
  var/spool/
  [...]

  该命令的c选项表示创建一个新的备份(c),并且使用详细模式(v),并且将整个系统备份输出到/dev/st0(f)。在这种情况下,tar 操作将打开/dev/st0文件(设备),将数据流以tar的数据格式的写入到那个打开的文件,并且在所有的数据被写入以后,关闭文件。因为我们这里选择 了回卷设备/dev/st0,文件(存储介质)将使设备驱动在tar关闭文件以后回卷磁带。

  下一步将是验证数据被正确的写入到磁带中。不幸的是,Linux环境下的tar命令仅仅提供了一种比较模式的验证手段-磁带内容被重新读入,并和原始文件逐字节进行比较。然而,这仍然比没有验证要好很多。因为在进行恢复时发现磁带中有坏数据是一个非常糟糕的事情。

  在恢复结束并且被验证以后,一切并没有结束,因为系统中的数据是不断变化的,一个保持不断变化的系统的备份的方法是持续进行定期的对发生变化的 数据进行备份。有很多方法可以实现这样的备份,但是最方便的是增量(incremental)和差分(differential)备份。

  这两种方法的备份方法都是依赖于时间,或者是基于上一次备份(增量),或者基于上一次完全备份。增量备份仅仅备份那些上次备份以来修改过的数据,有时候也被称为常规备份;而差分备份则仅仅备份上次完全备份以来变化过的文件。下表是几种备份方案的特点比较:

  5、完全备份 增量备份 差分备份

  空间使用 Most Least Less than Full
  备份速度 Slowest Fastest Faster than Full
  恢复速度 Fastest Slowest Faster than Incremental

  差分备份可能会备份增量备份忽略的数据,但是差分备份恢复速度要比增量快,因为它仅仅需要上一次完全备份和最近的一次差分备份;而增量备份则需要从上次完全备份及以来的每一次增量备份。

  为了使用者写方法进行备份,需要使用tar命令的-N或--newer选项,后面跟一个时间,时间应该是通常的日历格式(例如:03/12/199 = March 12th, 1999)。

  tar -cvf /dev/st0 --newer 03/12/1999 /

  该命令将备份系统中所有在March 12th, 1999及其以后被修改的文件。
我下面提供了一个简单的脚本文件来作为一个同时实现完全和差分备份的自动化模型。在使用该脚本以前,请注意检查脚本头定义的环境变量以满足自己的需要。

#!/bin/sh
  #
  #######################################
  #
  # TAR backup script to cover daily and weekly backups on one tape.
  # Generic UNIX version - edit variables as required
  #
  # For this to work, it MUST be started on a Monday!
  #
  # Copyright (c) 1999, Tim Jones
  # Permission granted for use/modification
  #
  # Tim Jones/Linux Magazine provide this shell script with no warranty
  # (implied or otherwise)
  #
  ########################################

  DOW=`date +%w`
  DATE=`date +%D`
  DAY=`date +%A`
  DEVICE="MY REWIND TAPE" # Rewinding tape drive
  NDEVICE="MY NO_REWIND TAPE" # non-rewinding tape drive
  REWIND="mt -f $DEVICE rewind"
  EOD="mt -f $NDEVICE eod"
  FSF="mt -f $NDEVICE fsf"
  MAILLIST="root" # list of users to receive backup notice

  if [ $DOW = "6" ]
  then
  # This is Saturday, so append and write the whole system!
  $EOD
  echo $DATE > /tmp/.LASTFULL
  tar -cvvf $NDEVICE / >/tmp/backup.txt
  $REWIND
  $FSF 5
  tar -dvf $NDEVICE >> /tmp/backup.txt
  $REWIND
  cp /tmp/.LASTFULL /etc/.LASTFULL
  else
  # this is not Saturday
  case $DOW in
  0)
  # it's Sunday - nothing to do
  exit 0
  ;;
  1)
  # Monday, Let the tape rewind for the difference verification
  echo $DATE > /tmp/.LASTINC
  tar -cvvf $DEVICE --newer `cat /etc/.LASTFULL` / >/tmp/backup.txt
  cp /tmp/.LASTINC /etc/.LASTINC
  ;;
  *)
  # Other Days, must rewind manually and Inspect, -i
  $EOD
  echo $DATE >/tmp/.LASTINC
  tar -cvvf $NDEVICE --newer `cat /etc/.LASTINC` / >/tmp/backup
  $REWIND
  $FSF `expr $DOW - 1`
  echo "************ Verifying ${DAY}'s backup" >> /tmp/backup.txt
  tar --dvf $NDEVICE >> /tmp/backup.txt
  cp /tmp/.LASTINC /etc/.LASTINC
  $REWIND
  esac
  fi
  mail $MAILLIST < /tmp/backup.txt
  rm -f /tmp/backup.txt
  # END OF SCRIPT

 

linux基本环境的安装1

准备篇 1、配置防火墙,开启80端口、3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tc...
  • wenqingzzz
  • wenqingzzz
  • 2015年01月15日 16:34
  • 705

linux系统下备份多个根文件系统

linux系统下备份多个文件系统在一些要求比较高的嵌入式系统中,要求做两个甚至三个系统,以防止在升级或者操作不当时候文件系统被损坏,从而这个设备就变砖啦。这个问题可以有两种比较好的方法解决。一是系统备...
  • laowu1001
  • laowu1001
  • 2015年09月22日 17:57
  • 1273

Linux下对MySql数据库备份与恢复

MySQL命令行导入数据库: 1,将要导入的.sql文件移至bin文件下,这样的路径比较方便 2,同上面导出的第1步 3,进入MySQL:mysql -u 用户名 -p 如我输入的命令行:my...
  • chun8416
  • chun8416
  • 2016年04月05日 15:29
  • 6088

浅析生产环境数据库备份与恢复

一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作甚至会。。。 所以备份是重要的,但光有备份还不行,备份后...
  • dnwxwj
  • dnwxwj
  • 2015年10月17日 10:06
  • 463

生产环境Mysql数据库备份脚本

在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小...
  • zxjiayou1314
  • zxjiayou1314
  • 2016年09月04日 23:34
  • 1262

Linux 常用备份恢复命令-tar

Linux 常用备份恢复命令-tar 作者:  CNETNews.com.cn  2008-08-25 20:01:39 关键词: 操作系统 备份恢复 Linux  ...
  • tangtyk123456
  • tangtyk123456
  • 2014年03月09日 22:19
  • 692

Linux下G4L硬盘备份方案

一、需求:将现在服务器上系统盘备份至新硬盘,必须保证系统的完整性,万一母系统盘(源盘,以下都称为“母盘”)出现问题了,子系统盘(备份目标盘,以下都称为“子盘”)可以直接挂载上去使用。 二、环境:   ...
  • Hu_wen
  • Hu_wen
  • 2017年03月16日 15:01
  • 1038

linux下使用crontab定时备份MYSQL数据库的方法

只需按照下面3步做,一切都在你的掌控之下:  第一步:在服务器上配置备份目录代码:  -------------------------------------------------...
  • orichisonic
  • orichisonic
  • 2015年08月21日 11:10
  • 1645

Linux系统备份

Linux系统备份
  • xiahouzuoxin
  • xiahouzuoxin
  • 2014年05月08日 17:36
  • 1851

Linux下如何实现备份和还原

最近在配置centos的服务器,我们都知道配置过程可能很复杂,有时还可能出错,总不能配置出错了无法恢复就重装系统吧,所以说做好系统备份是很重要的。 Linux的备份其实就是把文件统一打个包存起来,等...
  • xingjiarong
  • xingjiarong
  • 2015年08月09日 09:15
  • 7288
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux环境下的基本备份方法
举报原因:
原因补充:

(最多只允许输入30个字)