首页 > 代码库 > centos备份与还原

centos备份与还原

centos备份与还原

dump备份
restore还原
dd数据备份
tar备份
scp
mkisofs镜像文件制作

 

 

dump备份
 1.dump主要用于备份整个文件系统备份,虽然也可以备份单一目录,但是对目录文件支持不足,单一目录还是需要使用打包压缩的方式进行备份。
 
 dump是功能上制定等级,也就是可以进行增量备份
 dump等级分为0-9,10个等级,0为完全备份,1是在0的基础上惊醒增量备份,一次类推。
 
当待备份的数据为单一文件系统

可以利用了level 0~9进行备份,同时可以使用dump完整功能

当待备份的数据只是目录,并非单一文件系统

限制:
所有备份数据必须都在该目录下
仅能使用level 0  进行数据备份
不支持-u参数,即无法创建/etc/dumpdates这个level备份的时间记录文件
语法:dump [-Suvj] [-level] [-f备份文件]待备份数据
            dump -W
选项与参数:
-S:仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕
-u:将这次备份记录到/etc/dumpdates文件中
-v:将dump文件过程显示出来
-j:加入bzip2的支持,将数据进行压缩,默认压缩等级2
-level:备份等级0~9
-f:备份文件
-W:列出在/etc/fstab里面的具有dump设置的分区是否有过备份

 

案例
   1.查看需要备份的文件需要多少空间才能备份完
    dump -S  /tmp
 2.备份文件
 dump -u -0 -f /tmp/backup/passwd.dump.0 /etc/passwd    ##备份/etc/passwd文件到/tmp/backup/passwd.dump.0 并起名为passwd.dump.0
 参数在上面可以看到
 3.查看文件系统备份记录
 dump -W
 4.增量备份
 在passwd里面增加文件数,
 dump  -1 -f /tmp/backup/passwd.dump.1 /etc/passwd   
 5.单一目录进行备份
 dump -0 -f /root/etc.dump /etc

 在这里备份了数据,如何来恢复数据呢
 dump备份的数据有restore进行还原


 语法:

查看dump文件:restore –t [-f dumpfile] [-h]
比较dump与实际文件:restore –C [-f dumpfile] –D挂载点
进入互动模式(还原单个文件):restore –i [-f dumpfile]
还原整个文件系统:restore –r [-f dumpfile]

选项与参数:
相关的各种模式,各种模式无法混用.例如不可以写 -tC

-t:此模式用在察看 dump起来的备份档中含有什么重要数据!类似 tar -t功能;
-C:此模式可以将 dump内的数据拿出来跟实际的文件系统做比较,最终会列出[在 dump文件内有记录的,且目前文件系统不一样]的文件;
-i:进入互动模式,可以仅还原部分文件,用在 dump目录时的还原
-r:将整个 filesystem还原的一种模式,用在还原针对文件系统的 dump备份;

其他较常用到的选项功能:
-h:察看完整备份数据中的 inode与文件系统 label等信息
-f:后面就接你要处理的那个 dump文件
-D:与 -C进行搭配,可以查出后面接的挂载点与 dump内有不同的文件

 

举例:
 1.查看dump备份的文件、
 restore -t -f /tmp/backup/tmp.dump.0
 2.比较文件差异
 restore -C -f /etc/backup/tmp.dump.0 -D /tmp
 3.还原整个文件系统
 首先进入需要还原的文件
 cd /tmp
 restore -r -f /etc/tmp.dump.0 还原备份
 restore -r -f /etc/tmp.dump.1       还原增量

 

 

dd
 dd功能不仅限于创建文件,更多功能在于“备份”,cp,dump只是简单的文件数据拷贝,而dd可以读取设备的所有内容,比如superblock ,boot sector,mete data等
 
语法:dd if=”input file” of=”output file” bs=”block” count=”number”
选项与参数:
if:输入文件,也可以是设备
of:输出文件,也可以是设备
bs:每个block的大小,默认是512K
count:block数量
 
举例:
 1.文件备份
 dd if=/etc/passwd of=/tmp/passwd.dd
 2.文件系统备份
 dd if=/dev/sda1 of=/tmp/boot.dd bs=1M
 3.文件系统还原
 dd if=/tmp/boot.dd of=/dev/sda1 bs=1M
 4.文件系统完全复制
 Dump备份时,我们需要先用Dump将文件系统备份,然后创建新的文件系统,格式化,再将备份文件还原到新的文件系统。
 使用dd可以不用格式化,就可以完全复制一个文件系统,因为dd将uperblock ,boot sector,mete data等信息都进行复制,格式化要做的不也正是这些事吗
 新建一个磁盘,直接使用dd
 dd if=/dev/sda1 of=/dev/sda5
 

tar备份 
 1.tar命令

tar是一个已移植到Linux中的经典UNIX命令。tar是Tape ARchive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。它是一个基于文件的命令,它本质上是连续地、首尾相连地堆放文件。

使用tar可以打包整个目录树,这使得它特别适合用于备份。归档文件可以全部还原,或从中展开单独的文件和目录。备份可以保存到基于文件的设备或磁带设备上。文件可以在还原时重定向,以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。tar是与文件系统无关的,它可以使用在ext2、ext3、jfs、Reiser和其他文件系统上。

在Linux世界里经常使用tar命令进行备份,此时将涉及tar命令的一些参数。 tar命令的完整格式是:
tar <operation> [options] <files_to_backup_or_restore>

其中:
operation:用于指定tar要进行的操作
options:用于指定一系列的选项
files_to_backup_or_restore:用于给出要备份或要恢复的文件或目录名,在指定目录时也包括了这个目录下的子目录。

下表给出了tar命令的操作说明。

操作说明

[-]A  连接多个归档文件为一个归档文件。 
[-]c  用于创建一个新的存档文件。 
[-]x  从归档文件中恢复备份文件。 
[-]t  用于列出一个存档文件中的文件名。 
[-]u  仅仅添加比存档文件中更新的文件。即,用新增的文件取代原备份文件,如果在归档文件中找不到要更新的文件,则把它追加到备份文件的最后。 
[-]d  将归档文件的内容与文件系统上的当前文件作比较。 
[-]r  将文件追加到指定的归档文件中。 
--delete  从归档文件中删除指定的文件。

下表给出了tar命令的常用选项说明。

选项说明

-f name  使用name指定存档文件名或设备名。 
-v  列出处理的详细信息。 
-z  用GNU的gzip压缩文件或解压。 
-j  用GNU的bzip2压缩文件或解压。 
-C  directory 将当前目录切换到 directory。 
-M  创建/列出/恢复多卷存档文件,以便在几个备份介质中存放。 
-N  DATE 指定仅对那些比DATE新的文件进行操作。 
-p  表示希望保留文件许可权限。 
-P  保留文件的绝对路径,即不去掉/。 
-w  要求等待用户确认每一个操作。 
-W  表示在写入备份内容到备份设备以后再读出来进行验证以提高可靠性。 
-T  filename 从指定的文件中读需要备份或恢复的文件名。 
-X  filename 不处理给定文件中列出的文件。 
--exclude=PATTERN  不处理指定的文件。   

使用tar备份文件
 通常将备份文件存储在单独的分区中,可以是系统本地硬盘中的一个分区,也可以是另外挂装的移动设备中的一个分区。因此,在备份之前,应该创建挂装点目录,并挂装文件系统。
 1.备份一个和多个目录
 tar -zcvpf /tmp/full-home.tar.gz /home /etc   吧/home和/etc两个目录备份到/tmp/full-home.tar.gz
 2.备份整个目录,除了mnt,mdeia,dev,proce,backups和lostr+found
 tar -zcvfp /backups/full-backup.tar.gz -C /  $(ls /| egrep -v "backups|mnt|media|dev|lost+found|proc")
 3. 使用exclude选项去除无需备份的文件和目录,除了mnt,media,dev,proc等
 tar -zcvpf /backups/full-backup.tar.gz -C / --exclude=mnt --exclude=media --exclude=dev .     备份整个/系统,去除/mtn,media和dev
 4.备份etc,home,usr/local和var/spool.不包括var/spool/squid目录
 tar -zxvpf /backup/full-backup.tar.gz -C / --exclude=var/spool/squid  etc home usr/local var/spool
 5,将需要备份的目录放到文本文件里面
 cat whatsbackup.txt
 /home
 /etc
 /usr/local
 /root
 tar -zcvpf /backup/full-backup.tar.gz -T whatsbackup.txt
 解释: -T 参数后制定的文件中,不能使用文件通配符
  
 6.增量备份
 1.下面的命令将备份/home目录自2016-2-2以来修改过的文件
 tar -N 2016-2-2 -zcvfp /back/backup-$(date +$F).tar.gz /home
 2.下面的命备份昨天修改过的文件
 tar -N $(date -d yesterday "+$F") -acvfp /back/backup-$(date +$F).tar.gz /home
 
 以下两种书写方式均可,但含义有所不同:
-N yesterday : 比昨天的当前时间新的文件,例如:若当先时间为 2:31,则表示自昨天 2:31 以来的新文件
-N $(date -d yesterday ”+%F”) : 自昨天 0:00 以来的新文件

 下面的命令使用命令替换从文本文件中获得日期
# tar -N $(cat /backups/last-full/full-backup-date) \
> -zcvpf /backups/inc-backup_$(date +%F).tar.gz /home

/backups/last-full/full-backup-date 是在创建完全备份的同时使用如下命令创建的文件:
date +%F > /backups/last-full/full-backup-date

2、使用 find 命令获取增量备份的文件列表 使用如下命令找出 n 天(如:7天)内修改过的文件,生成备份内容的文件列表
# find /home /etc /root -mtime -7 -print > /backups/logs/inc-backup_$(date +%F).log

对指定文件列表中的文件实现增量备份
# tar -zcvpf /backups/inc-backup_$(date +%F).tar.gz \
> -T /backups/logs/inc-backup_$(date +%F).log

 

scp
 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

安装:

yum install openssh-clients

 

1.命令格式:
scp [参数] [原路径] [目标路径]
2.命令功能:
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。
3.命令参数:

-1  强制scp命令使用协议ssh1 
-2  强制scp命令使用协议ssh2 
-4  强制scp命令只使用IPv4寻址 
-6  强制scp命令只使用IPv6寻址 
-B  使用批处理模式(传输过程中不询问传输口令或短语) 
-C  允许压缩。(将-C标志传递给ssh,从而打开压缩功能) 
-p 保留原文件的修改时间,访问时间和访问权限。 
-q  不显示传输进度条。 
-r  递归复制整个目录。 
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。  
-c cipher  以cipher将数据传输进行加密,这个选项将直接传递给ssh。  
-F ssh_config  指定一个替代的ssh配置文件,此参数直接传递给ssh。 
-i identity_file  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。   
-l limit  限定用户所能使用的带宽,以Kbit/s为单位。    
-o ssh_option  如果习惯于使用ssh_config(5)中的参数传递方式,  
-P port  注意是大写的P, port是指定数据传输用到的端口号  
-S program  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

 

 1.本地到远程
 scp aa.txt root@ip:/tmp
 注释:ip可以是ip或远程主机名
 2.远程到本地 
 scp root@ip:/etc/passwd /etc
 3.拷贝目录的话需要加上-r
 4.指定端口复制文件
 scp -p 443 root@ip:/usr/local/aa.txt /tmp
 5.文件的传输速度的快慢,跟文件压缩加密有关。

 


mkisofs镜像文件备份
 
语法:mkisofs [-o镜像文件] [-rv] [-m file]待备份的文件 [-V vol] –graft-point isodir=sysdir
选项与参数:
-o:镜像文件
-r:产生UNIX/Linux支持的文件数据
-v:显示构建ISO的过程
-m:排除的文件
-V:卷标名称
-graft-point:目录对照名称,如果不进行指定所以的信息都会保持在根目录
 
 举例:
 1.mkisofs -o /tmp/system.img -r -m /home/lost+found -V ‘tkf_file‘ -graft-point /root=/root /home=/home /etc=/etc 
 2.mount -o loop /tmp/system.img /mnt


参考:
 http://blog.csdn.net/lqzixi/article/details/24690951
  http://www.zzbaike.com/wiki/CentOS/%E4%BD%BF%E7%94%A8tar%E5%A4%87%E4%BB%BD
 

 

后续继续更新。。。。。

 

 

 

 

 

本文出自 “IT阿宝” 博客,转载请与作者联系!

centos备份与还原