ubuntu下创建备份

计算机系统在使用过程中,总有一天会运行失败。如果这台机器是服务器,可能会引起很大麻烦。公司可能会因此破产,因为丢失了重要数据。因此,对数据适当的备份是十分必要的。以下说明两种备份方案:使用tar备份文件,使用dd备份设备。


使用tar备份文件

命令行工具tar可能是linux下最流行的备份工具了。它作为独立工具,将备份写入归档文件。归档文件可以写到磁带上,不过现在一般写到文件中,另外,文件可以使用bzip2或者gzip压缩,也就是著名的tarball,这也是通用的交付软件安装文档的方式。以下说明如何创建归档以及如何提取归档。

创建归档文件

最简单的创建命令:

tar cvf mytar.tar test1/

该命令在当前目录下创建mytar.tar文件,文件内容是test1目录及其下面的所有文件。其中:

  1. c(create)是创建;
  2. v(verbose),将输出归档的文件和目录名称,不是必须的,但是建议一直使用这个参数,这样可以看到建档的过程,尤其是当归档过程很长的时候;
  3. f(file),指定归档到哪里,如果不设置,默认是归档输出到控制台,设置为f指定归档到文件。

在归档时增加压缩:

  1. z:使用gzip工具压缩,这是最普遍的压缩工具,因为有比较合适的压缩比率,而且创建文件的时间不是很长,创建的文件扩展名为gz;
  2. j:使用bzip2压缩,该工具比gzip高10%-20%压缩比率,但是要付出至少双倍的创建文件时间,创建的文件扩展名为bz2。

提取归档文件

提取tar文件到当前目录:

tar -xvf /file.tar

提取压缩的tar文件到当前目录:

tar -zxvf /file.tar.gz

提取tar文件到指定目录下:

tar -xvf /file.tar C /somedir

移动完整的目录

大多数时间,tar用于将一个或者多个目录备份到一个文件中。不过,因为它出色的处理特定文件的能力(比如通过数据库确定过时的文件),tar也常用于移动目录。一种做法是先创建一个临时文件,然后提取临时文件到新的目录。这不是最简单的做法,因为这需要两倍的磁盘空间:原始目录的空间+临时文件的空间。而使用管道,可直接将一个目录中的内容送到另外的目录中。

tar -cC test1/ . | tar -vxC newtest/

  1. c:创建归档文件;
  2. C:归档时不包括该目录,比如文件test1/readme.txt归档为readme.txt,不包括test1/目录;
  3. 因为未使用f参数,归档到标准输出;
  4. 使用管道重定向所有输出到另外的命令;
  5. xC:提取标准输出的内容,并输入到newtest目录中,该目录必须已经存在。

创建增量备份

创建对多个目录的备份:

tar cvf test.tar new_test/ test1/

每次备份整个目录内容可能比较慢,可以通过增量备份改善性能。增量备份的基础是完整备份。

创建一个全备份和一个快找文件,快照文件包含所有备份文件的列表:

tar czvg backup/snapshot-file -f backup/full-backup.tar.gz  test1/

backup目录要求已经存在。有了完全备份,就可以进行增量备份了,比如:

tar czvg backup/snapshot-file -f backup/monday-bak.tar.gz test1/

这条命令将只备份全备份以后test1目录下修改或者新增的文件和目录。

如上所示,将有两个备份文件,恢复的过程是分别提取备份文件,从全备份开始,然后用增量备份做覆盖:

tar xzvf full-backup.tar.gz
tar xzvf monday-bak.tar.gz

使用dd备份设备

tar无法完整的备份设备,只能用于文件系统。dd正是用于备份设备。dd是convert and copy的所写,本应该为cc,可是该命令已经存在了,所以才有这么个奇怪的名字。

dd命令使用很简单,因为只有两个参数if和of,分别用于设置输入和输出参数。dd命令可用于文件的复制:

dd if=php.ini of=dd.ini

不过dd的主要作用还是完整的复制设备。比如将光驱复制为iso文件:

dd if=/dev/cdrom of=/mycd.iso

然后,可以mount该文件为光驱:

mount -o loop /mycd.iso /mnt

在比如,可以将第一块磁盘克隆到第二块磁盘:

dd if=/dev/sda of=/dev/sdb

该命令需要花费一些时间,比如几个小时,而且将会擦除sdb设备原有数据。

你可能感兴趣的:(Ubuntu)